flutter 省道中一个范围内的随机双生成

f45qwnt8  于 2023-02-13  发布在  Flutter
关注(0)|答案(4)|浏览(127)

需要在一个范围内生成随机双精度数
nextint()函数有一个max参数,而nextdouble()没有任何参数。是否有其他方法可以返回dart中某个范围内的随机双精度数?

z4iuyo4d

z4iuyo4d1#

nextDouble返回一个0到1之间的值(不包括)。因此,如果你想要一个在a(包括)到b(不包括)范围内的数字,你可以这样做:

double doubleInRange(Random source, num start, num end) => 
    source.nextDouble() * (end - start) + start;

print(doubleInRange(random, a, b));
0s0u357o

0s0u357o2#

不,没有,但是很容易重新创建它,因为nextInt只接受max值(独占)。
nextDouble() * max

mbjcgjjk

mbjcgjjk3#

我怀疑有没有。如果你只想要双精度值,你可以把整数值转换成双精度值

import 'dart:math';

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

如果你想要nextDouble()生成的double类型的值,比如'0.2502033576383784',我建议你创建一个函数来处理值的范围。

import 'dart:math';

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

hmmo2u0o4#

我有一个更简单的解决方案添加到列表中(仅限最大范围)。

var random = Random();
int randomInt = random.nextInt(45);
double randTemp = random.nextDouble() * randomInt;

相关问题