Pregunta

¿Cómo genero números aleatorios usando Dart?

¿Fue útil?

Solución

Use Random clase de dart:math:

import 'dart:math';

main() {
  var rng = new Random();
  for (var i = 0; i < 10; i++) {
    print(rng.nextInt(100));
  }
}

Este código se probó con DART VM y Dart2js, a partir de la época de esta escritura.

Otros consejos

Si necesita criptographicy-side threats (por ejemplo, para el cifrado), y está en un navegador, puede usar el gromptografía API :

int random() {
  final ary = new Int32Array(1);
  window.crypto.getRandomValues(ary);
  return ary[0];
}

Esto funciona en Dartium, Chrome y Firefox, pero probablemente no en otros navegadores, ya que esta es una API experimental.

Aquí hay un fragmento para generar una lista de números aleatorios

import 'dart:math';

main() {
  var rng = new Random();
  var l = new List.generate(12, (_) => rng.nextInt(100));
}

Esto generará una lista de 12 enteros de 0 a 99 (inclusive).

Se acaba de agregar una API aleatoria segura a dart:math

new Random.secure()

dart:math Random agregó un secure constructor que devuelve un elemento criptográficamente seguro generador aleatorio que lee de la fuente de entropía proporcionada por el incrustador para cada valor aleatorio generado.

que delega a window.crypto.getRandomValues() en el navegador y en el sistema operativo (como urandom en el servidor)

Una solución alternativa podría estar usando el siguiente código Drandom .Esta clase debe usarse con una semilla.Proporciona una interfaz familiar a lo que usted esperaría en .NET, se portado a Random.cs de Mono.Este código puede no ser seguro de criptografía y no se ha probado estadísticamente.

Solo escribió esta pequeña clase para generar Normal aleatorios ... Fue un punto de partida decente para la comprobación que necesito hacer.(Estos conjuntos se distribuirán en forma de "campana" Curva.) La semilla se fijará al azar, pero si desea poder volver a generar un conjunto, puede pasar una semilla específica y se generará el mismo conjunto.

Diviértete ...

class RandomNormal {
  num     _min, _max,  _sum;
  int     _nEle, _seed, _hLim;
  Random  _random;
  List    _rNAr;

  //getter
  List get randomNumberAr => _rNAr;

  num _randomN() {
    int r0 = _random.nextInt(_hLim);
    int r1 = _random.nextInt(_hLim);
    int r2 = _random.nextInt(_hLim);
    int r3 = _random.nextInt(_hLim);

    num rslt = _min + (r0 + r1 + r2 + r3) / 4000.0;  //Add the OS back in...
    _sum += rslt; //#DEBUG ONLY
    return( rslt );
  }

  RandomNormal(this._nEle, this._min, this._max, [this._seed = null]) {
    if (_seed == null ) {
      Random r = new Random();
      _seed    = r.nextInt(1000);
    }
    _hLim   = (_max - _min).ceil() * 1000;
    _random = new Random(_seed);
    _rNAr   = [];
    _sum    = 0;//#DEBUG ONLY

    h2("RandomNormal with k: ${_nEle}, Seed: ${_seed}, Min: ${_min}, Max: ${_max}");//#DEBUG ONLY
    for(int n = 0; n < _nEle; n++ ){
      num randomN = _randomN();
      //p("randomN  = ${randomN}");
      LIST_add( _rNAr, randomN );
    }

    h3("Mean = ${_sum/_nEle}");//#DEBUG ONLY
  }
}


new RandomNormal(1000, 80, 120);
new RandomNormal(1000, 80, 120);
new RandomNormal(1000, 80, 120);
new RandomNormal(1000, 80, 120);
new RandomNormal(1000, 80, 120);
new RandomNormal(1000, 80, 120);
new RandomNormal(1000, 80, 120);

Luego, puede usarlo así para verificar la media de conjuntos de 1000 números generados entre un límite bajo y alto.Los valores se almacenan en la clase para que se les puede acceder después de la instanciación.

_swarmii

Utilice esta biblioteca http://dart.googlecode.com / svn / sucursales / sangring_edge / dart / lib / math / random.dart proporcionó un buen generador aleatorio que creo que se incluirá en el SDK pronto espero que ayude a

Puedes lograrlo a través de Random objeto de clase random.nextInt(max), Qué esta en dart:math biblioteca.El nextInt() El método requiere un límite máximo.El número aleatorio comienza desde 0 y el límite máximo en sí es exclusivo.

import 'dart:math';
Random random = new Random();
int randomNumber = random.nextInt(100); // from 0 upto 99 included

Si desea agregar el límite mínimo, agregue el límite mínimo al resultado

int randomNumber = random.nextInt(100) + 10; // from 10 upto 99 included
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top