Java api 有一种方法可以生成 0(含)和 n(不含)之间的整数,但没有一种方法可以在给定一定范围(例如 2.0 到 3.0)的情况下生成双精度值的随机数。如何才能做到这一点?
double x = 0.7 + Double.valueOf(Math.random()*(9.0-0.7)).intValue();
结果只有少数 0.7 类型
你非常接近,但intValue()
调用是不必要的,Double.valueOf( String )
调用甚至不应该编译。
public double random( double min, double max )
{
double diff = max - min;
return min + Math.random( ) * diff;
}
标记的答案不包括最大值(nextDouble 的最大值为 0.9)。作为旁注,我想提出我的答案,包括最大值。
public double randomDouble(double min, double max) {
double divider = 1.1111111111111111111111111111111;
double num = min + (random.nextDouble() * ((max - min) * divider));
return num2;
}
您是否尝试过 Random 类? http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Random.html 有浮点、双精度的方法...