我是一个Java noob尝试生成-10到10之间的随机双精度。我知道我会做以下事情:
Random r = new Random();
int i = -10 + r.nextInt(21);
然而,对于双打,这不起作用:
Random r = new Random();
double i = -10 + r.nextDouble(21);
有人可以解释一下双打的情况吗?
答案 0 :(得分:5)
试试这个:
Random r = new Random();
double d = -10.0 + r.nextDouble() * 20.0;
注意:它应该是20.0(不是21.0)
答案 1 :(得分:4)
尝试使用它来生成给定范围内的值:
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);
}
答案 2 :(得分:0)
从此随机数生成器的序列返回下一个伪随机数,均匀分布在0.0和1.0之间的double值。
nextDouble不接受参数,您只需将其乘以您的范围即可。或者更一般地说:
minimum + (maximum - minimum) * r.nextDouble();
答案 3 :(得分:0)