任何人都知道如何实现这一目标。我已经尝试了通常的公式,但我只得到正数
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;
}
}
这将以相同的概率返回任何有限双精度。
你不能仅仅将上面的公式作为(Double.MAX_VALUE - (-Double.MAX_VALUE))
溢出到无穷大。即所有正双精度值和负双精度值的范围太大而无法存储在双精度值中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)