【发布时间】:2012-10-17 18:07:26
【问题描述】:
在 [0, n) 中选择随机数的一种常见方法是取 rand() 模 n 的结果:rand() % n。然而,即使可用的rand() 实现返回的结果是完全一致的,当RAND_MAX + 1 没有时,结果 [0, n) 数字的一致性应该不会有问题除以 n?例如。假设RAND_MAX 是 2,而 n 是 2。那么在 3 个可能的 rand() 输出中:0、1 和 2,当我们使用它们取模 n。因此输出根本不会是均匀的。
在实践中这是一个真正的问题吗?在 [0, n) 中选择从rand() 输出统一派生的随机数的更好方法是什么,最好不使用任何浮点运算?
【问题讨论】:
-
不完全是重复的,因为偏见问题被认为是理所当然的,问题是“这在实践中真的是一个问题吗?”我试图量化答案中的偏见。
-
@MuriloVasconcelos:是的,我刚刚接受了一个。