Rand() % 14 生成器返回有限值
在最近的程序中,开发人员遇到了 rand() % 14 的问题表达式始终只生成 6 或 13 的值。尽管尝试多次执行代码,结果仍然保持一致。问题在于 Apple 的 MCG 使用的随机数生成器的性质。
根据维基百科的解释,MCG 的乘数 16807 可以被 7 整除。这意味着 srand() 之后生成的第一个随机数将当以 14 为模时,只有一位熵,导致值的范围有限。此缺陷归因于 Apple 使用的低质量随机数生成器。
解决此问题的一个简单方法是在 srand() 之后多次调用 rand() 并丢弃初始结果。这将增强生成数字的熵并解决有限值输出的问题。
以上是为什么'rand() % 14”在 Apple 的 MCG 上返回有限值?的详细内容。更多信息请关注PHP中文网其他相关文章!