Rand() % 14:揭开重复值的奥秘
在编程中,rand() 函数常用于生成随机数数字。然而,一些用户遇到了一个有趣的问题,即表达式 rand() % 14 始终只生成 6 或 13。
要了解此行为,让我们深入研究 rand() 的工作原理。它利用 Apple 的梅森同余生成器 (MCG) 算法,该算法涉及特定的乘数。不幸的是,这个乘数可以被 7 整除,导致在有限范围内生成随机数时会出现不稳定的行为。
具体来说,调用 srand() 后生成的第一个随机数将仅表现出一位模 14 的熵。这意味着它只能假设两个可能的值:6 或 13。
要解决此问题,有一个简单的解决方案。只需调用 rand() 几次并丢弃结果即可引入随机性。这确保了 rand() % 14 中使用的第一个随机数不受初始播种的影响。
以上是为什么 `rand() % 14` 有时只返回 6 或 13?的详细内容。更多信息请关注PHP中文网其他相关文章!