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