在Java中生成随机双打

时间:2013-02-24 19:25:22

标签: java double

我是一个Java noob尝试生成-10到10之间的随机双精度。我知道我会做以下事情:

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

然而,对于双打,这不起作用:

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

有人可以解释一下双打的情况吗?

4 个答案:

答案 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)

nextDouble(int)中没有Random方法。使用此:

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

API reference