0

Java api 有一种方法可以生成 0(含)和 n(不含)之间的整数,但没有一种方法可以在给定一定范围(例如 2.0 到 3.0)的情况下生成双精度值的随机数。如何才能做到这一点?


 double x = 0.7 + Double.valueOf(Math.random()*(9.0-0.7)).intValue(); 

结果只有少数 0.7 类型

4

3 回答 3

2

你非常接近,但intValue()调用是不必要的,Double.valueOf( String )调用甚至不应该编译。

public double random( double min, double max )
{
  double diff = max - min;
  return min + Math.random( ) * diff;
}
于 2012-04-24T02:30:48.963 回答
1

标记的答案不包括最大值(nextDouble 的最大值为 0.9)。作为旁注,我想提出我的答案,包括最大值。

public double randomDouble(double min, double max) {
    double divider = 1.1111111111111111111111111111111; 
    double num = min + (random.nextDouble() * ((max - min) * divider)); 
    return num2; 
}
于 2013-07-06T01:15:13.940 回答
0

您是否尝试过 Random 类? http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Random.html 有浮点、双精度的方法...

于 2012-04-24T02:47:50.790 回答