如何使用Dart生成随机数?


当前回答

该方法生成随机整数。最小值和最大值都包含在内。

确保你在文件中添加了这一行:import 'dart:math';然后你可以添加并使用这个方法:

int randomInt(int min, int max) {
return Random().nextInt(max - min + 1) + min;
}

因此,如果你调用randomInt(-10,10),它将返回一个介于-10和10之间的数字(包括-10和10)。

其他回答

如果你需要加密安全的随机数(例如加密),并且你在浏览器中,你可以使用DOM加密API:

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

这适用于Dartium、Chrome和Firefox,但可能不适用于其他浏览器,因为这是一个实验性的API。

对我来说,最简单的方法是:

import 'dart:math';
Random rnd = new Random();
r = min + rnd.nextInt(max - min);
//where min and max should be specified.

感谢@adam-singer的解释。

使用dart:math中的随机类:

import 'dart:math';

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

在撰写本文时,这段代码已经使用Dart VM和dart2js进行了测试。

刚刚写了这个小类来生成正态随机数…对于我需要做的检查来说,这是一个很好的起点。(这些套将分布在一个“钟”形 曲线)。种子是随机设置的,但如果你想重新生成一个集合你只需要传递一些特定的种子,同样的集合就会生成。

玩得开心…

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);

然后您可以像这样使用它来检查在低和高限制之间生成的1000个nums集的平均值。值存储在类中,以便在实例化后可以访问它们。

_swarmii

试试这个,你可以控制最小/最大值:

注意,您需要导入省道数学库。

import 'dart:math';

void main() {
  
  int random(int min, int max) {
    return min + Random().nextInt(max - min);
  }

  print(random(5, 20)); // Output : 19, 5, 15.. (5 -> 19, 20 is not included)
}