如何在指定范围内获得随机双精度?

时间:2014-03-01 05:55:26

标签: java random double range

我真的认为这会起作用,但是当我运行它时,我总是得到一些随机的大小数,这没有任何意义。逻辑是对的,为什么代码不起作用?

do{
  value = rnd.nextDouble();
}while(value>min && value<max);

请记住“min”和“max”实际上是执行一些简单算术运算然后返回该值的函数,但为了简单起见,我只是将min和max放在一起,所以我不必发布整个类。

3 个答案:

答案 0 :(得分:0)

您可以声明startend个变量(intdouble),并使用nextDouble(),如:

value = rnd.nextDouble() * (end - start) + start;

请记住:

  

public double nextDouble()   返回下一个伪随机数,从此随机数生成器的序列中均匀分布介于0.0和1.0之间的double值。

答案 1 :(得分:0)

nextDouble method会返回double包含0.01.0排除的随机min值。您可以通过添加max值来转换范围,并通过将其乘以minvalue = (rnd.nextDouble() * (max - min)) + min; 之间的差异来缩放范围。

{{1}}

答案 2 :(得分:0)

要生成rangeMinrangeMax之间的随机值:

 Random r = new Random();
 double randomValue = rangeMin + (rangeMax - rangeMin) * r.nextDouble();