【发布时间】:2011-11-14 00:30:37
【问题描述】:
直觉上可以写一个随机双精度生成器如下:
double randDouble(double lowerBound, double upperBound)
{
double range = upperBound - lowerBound;
return lowerBound + range * rand();
}
假设我们假设rand() 在区间 [0, 1) 上返回一个均匀分布的伪随机双精度。
此方法是否保证返回 [lowerBound, upperBound) 内具有均匀概率分布的随机双精度数?我特别感兴趣的是浮点计算的性质是否会导致某些范围的最终分布出现峰值或下降。
【问题讨论】:
-
最好先阅读此维基百科article,因为这是一个“困难”的问题。
标签: language-agnostic random floating-point double probability