需要在一个范围内生成随机双精度数nextint()函数有一个max参数,而nextdouble()没有任何参数。是否有其他方法可以返回dart中某个范围内的随机双精度数?
nextint()
nextdouble()
z4iuyo4d1#
nextDouble返回一个0到1之间的值(不包括)。因此,如果你想要一个在a(包括)到b(不包括)范围内的数字,你可以这样做:
nextDouble
a
b
double doubleInRange(Random source, num start, num end) => source.nextDouble() * (end - start) + start; print(doubleInRange(random, a, b));
0s0u357o2#
不,没有,但是很容易重新创建它,因为nextInt只接受max值(独占)。nextDouble() * max
nextInt
max
nextDouble() * max
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)); } }
hmmo2u0o4#
我有一个更简单的解决方案添加到列表中(仅限最大范围)。
var random = Random(); int randomInt = random.nextInt(45); double randTemp = random.nextDouble() * randomInt;
4条答案
按热度按时间z4iuyo4d1#
nextDouble
返回一个0到1之间的值(不包括)。因此,如果你想要一个在a
(包括)到b
(不包括)范围内的数字,你可以这样做:0s0u357o2#
不,没有,但是很容易重新创建它,因为
nextInt
只接受max
值(独占)。nextDouble() * max
mbjcgjjk3#
我怀疑有没有。如果你只想要双精度值,你可以把整数值转换成双精度值
如果你想要nextDouble()生成的double类型的值,比如'0.2502033576383784',我建议你创建一个函数来处理值的范围。
hmmo2u0o4#
我有一个更简单的解决方案添加到列表中(仅限最大范围)。