【发布时间】:2014-03-01 05:55:25
【问题描述】:
我真的认为这会起作用,但是当我运行它时,我总是得到一些随机的大小数,这没有任何意义。逻辑是对的,为什么代码不行呢?
do{
value = rnd.nextDouble();
}while(value>min && value<max);
请记住,“min”和“max”实际上是执行一些简单算术运算然后返回该值的函数,但为了简单起见,我只放了 min 和 max,所以我不必发布整个类。
【问题讨论】:
我真的认为这会起作用,但是当我运行它时,我总是得到一些随机的大小数,这没有任何意义。逻辑是对的,为什么代码不行呢?
do{
value = rnd.nextDouble();
}while(value>min && value<max);
请记住,“min”和“max”实际上是执行一些简单算术运算然后返回该值的函数,但为了简单起见,我只放了 min 和 max,所以我不必发布整个类。
【问题讨论】:
您可以声明start 和end 变量(int 或double),并使用nextDouble() 之类的:
value = rnd.nextDouble() * (end - start) + start;
记住:
public double nextDouble() 从该随机数生成器的序列中返回 0.0 到 1.0 之间的下一个伪随机、均匀分布的双精度值。
【讨论】:
nextDouble method 返回介于 0.0 和 1.0 之间的随机 double 值。您可以通过添加min 值来转换范围,并通过将其乘以max 和min 之间的差异来扩大范围。
value = (rnd.nextDouble() * (max - min)) + min;
【讨论】:
在rangeMin 和rangeMax 之间生成一个随机值:
Random r = new Random();
double randomValue = rangeMin + (rangeMax - rangeMin) * r.nextDouble();
【讨论】: