首页 >后端开发 >C++ >为什么'rand() % 14”在 Apple 的 MCG 上返回有限值?

为什么'rand() % 14”在 Apple 的 MCG 上返回有限值?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-28 00:20:10614浏览

Why Does `rand() % 14` Return Limited Values on Apple's MCG?

Rand() % 14 生成器返回有限值

在最近的程序中,开发人员遇到了 rand() % 14 的问题表达式始终只生成 6 或 13 的值。尽管尝试多次执行代码,结果仍然保持一致。问题在于 Apple 的 MCG 使用的随机数生成器的性质。

根据维基百科的解释,MCG 的乘数 16807 可以被 7 整除。这意味着 srand() 之后生成的第一个随机数将当以 14 为模时,只有一位熵,导致值的范围有限。此缺陷归因于 Apple 使用的低质量随机数生成器。

解决此问题的一个简单方法是在 srand() 之后多次调用 rand() 并丢弃初始结果。这将增强生成数字的熵并解决有限值输出的问题。

以上是为什么'rand() % 14”在 Apple 的 MCG 上返回有限值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn