返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0
和 1.0
之间均匀分布的 double
值。
nextdouble
的常规协定是,伪随机地生成并返回一个从 0.0d
(包括)到 1.0d
(不包括)范围内均匀选择(大致)的 double
值。
random
类按如下方式实现 nextdouble
方法:
public double nextdouble() {
return (((long)next(26) << 27) + next(27))
/ (double)(1l << 53);
}
前面的描述中使用了不确定的词“大致”,因为 next
方法只是一个大致上独立选择位的无偏源。如果它是一个随机选择位的最佳源,那么给出的算法应该从规定范围完全一致地选择 double
值。
[在 java 的早期版本中,结果被我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
iis7站长之家地计算为:
return (((long)next(27) << 27) + next(27))
/ (double)(1l << 54);
这可能看似等效(如果不是更好的话),但实际上由于浮点数舍入中的偏差,它会引入较大的不均匀性:有效数的低位出现 0 的可能性是 1 的三倍!这种不均匀性在实践中可能没什么关系,但我们总是力求完美。]
- 返回:
- 下一个伪随机数,它是此随机数生成器序列中
0.0
和 1.0
之间均匀分布的 double
值 - 另请参见:
math.random()