如何使用C语言生成随机数?例如希望生成一段特定范围的随机数,如$[1,6]$来模拟掷骰子。
到目前为止,所有答案在数学上都是错误的。返回
rand() % N
并不统一给出[0, N)
范围内的数字,除非N
除以rand()
返回的区间长度(即是 2 的幂)。此外,我们不知道rand()
的模数是否独立:它们有可能是0, 1, 2, ...
,这是均匀的但不是很随机。唯一似乎合理的假设是rand()
给出泊松分布:任何两个相同大小的非重叠子区间均可能且独立。对于一组有限的值,这意味着均匀分布,并且还确保rand()
的值很好地分散。