任何人都知道如何实现这一目标.我尝试了通常的公式,但我只得到正数<= 10:
Double.MIN_VALUE + Math.random() * ((Double.MAX_VALUE - Double.MIN_VALUE) + 1)
你可以做到这一点
private static final Random rand = new Random();
public static double getRandomDouble() {
while(true) {
double d = Double.longBitsToDouble(rand.nextLong());
if (d < Double.POSITIVE_INFINITY && d > Double.NEGATIVE_INFINITY)
return d;
}
}
Run Code Online (Sandbox Code Playgroud)
这将以相同的概率返回任何有限双精度.
你不仅可以将上面的公式作为(Double.MAX_VALUE - (-Double.MAX_VALUE))溢出到无穷大.即所有正负双值的范围太大而不能存储在双精度值中.
| 归档时间: |
|
| 查看次数: |
348 次 |
| 最近记录: |