我是一个 Java 菜鸟,试图在 -10 和 10 之间生成随机双精度值。我知道整数我会做以下事情:
Random r = new Random();
int i = -10 + r.nextInt(21);
但是,对于双打,这不起作用:
Random r = new Random();
double i = -10 + r.nextDouble(21);
有人可以解释一下在双打的情况下该怎么做吗?
试试这个:
Random r = new Random();
double d = -10.0 + r.nextDouble() * 20.0;
注意:应该是 20.0(不是 21.0)
尝试使用它来生成给定范围内的值:
Random random = new Random();
double value = min + (max - min) * random.nextDouble();
或者尝试使用这个:
public double doubleRandomInclusive(double max, double min) {
double r = Math.random();
if (r < 0.5) {
return ((1 - Math.random()) * (max - min) + min);
}
return (Math.random() * (max - min) + min);
}
从该随机数生成器的序列中返回 0.0 到 1.0 之间的下一个伪随机、均匀分布的双精度值。
nextDouble 不带参数,您只需将其乘以您的范围。或更一般地说:
minimum + (maximum - minimum) * r.nextDouble();