在[0, n)中选择随机数的一种常见方法是取rand()
模n :的结果rand() % n
。但是,即使可用实现返回的结果是完全一致的,当不被n整除时,结果[0, n)数字rand()
的一致性是否应该存在问题?例如,假设是 2,n是 2。那么在 3 个可能的输出中:0、1 和 2,当我们使用它们模n时,我们分别得到 0、1 和 0 。因此,输出将根本不均匀。RAND_MAX + 1
RAND_MAX
rand()
这在实践中是一个真正的问题吗?在[0, n)中均匀地从输出中选择随机数的更好方法是什么rand()
,最好没有任何浮点运算?