3

我是一个 Java 菜鸟,试图在 -10 和 10 之间生成随机双精度值。我知道整数我会做以下事情:

Random r = new Random(); 
int i = -10 + r.nextInt(21);

但是,对于双打,这不起作用:

Random r = new Random(); 
double i = -10 + r.nextDouble(21); 

有人可以解释一下在双打的情况下该怎么做吗?

4

4 回答 4

6

试试这个:

    Random r = new Random(); 
    double d = -10.0 + r.nextDouble() * 20.0; 

注意:应该是 20.0(不是 21.0)

于 2013-02-24T19:29:28.110 回答
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);
}
于 2013-02-24T19:28:55.747 回答
0

从该随机数生成器的序列中返回 0.0 到 1.0 之间的下一个伪随机、均匀分布的双精度值。

nextDouble 不带参数,您只需将其乘以您的范围。或更一般地说:

minimum + (maximum - minimum) * r.nextDouble();
于 2013-02-24T19:28:44.613 回答
0

中没有nextDouble(int)方法Random。用这个:

double i = -10.0 + r.nextDouble() * 20.0; 

API 参考

于 2013-02-24T19:28:52.723 回答