首页 >后端开发 >C++ >为什么 `rand() % 14` 有时只返回 6 或 13?

为什么 `rand() % 14` 有时只返回 6 或 13?

DDD
DDD原创
2024-11-25 10:34:11347浏览

Why Does `rand() % 14` Sometimes Only Return 6 or 13?

Rand() % 14:揭开重复值的奥秘

在编程中,rand() 函数常用于生成随机数数字。然而,一些用户遇到了一个有趣的问题,即表达式 rand() % 14 始终只生成 6 或 13。

要了解此行为,让我们深入研究 rand() 的工作原理。它利用 Apple 的梅森同余生成器 (MCG) 算法,该算法涉及特定的乘数。不幸的是,这个乘数可以被 7 整除,导致在有限范围内生成随机数时会出现不稳定的行为。

具体来说,调用 srand() 后生成的第一个随机数将仅表现出一位模 14 的熵。这意味着它只能假设两个可能的值:6 或 13。

要解决此问题,有一个简单的解决方案。只需调用 rand() 几次并丢弃结果即可引入随机性。这确保了 rand() % 14 中使用的第一个随机数不受初始播种的影响。

以上是为什么 `rand() % 14` 有时只返回 6 或 13?的详细内容。更多信息请关注PHP中文网其他相关文章!

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