为什么 23、17 和 26 是随机数生成的魔法数字?

Xorshift Generators

为什么 23、17 和 26 是随机数生成的魔法数字?

此刻,全球数十亿设备正在运行同一段代码,它们藏在浏览器和服务器深处,控制着游戏里的每一次事件和每一张卡牌。我是 Alan Zucconi,本文将带你深入剖析 xorshift 生成器这一伪随机算法家族。我们将探索 George Marsaglia 在 2003 年提出的基于 XOR 和位移的算法,揭示为什么 13、17 和 5 这样的特定位移参数能生成最大周期的序列,而随意更改这些“魔法数字”却会导致随机性崩塌。从 No Man's Sky 到 Minecraft,这些看似简单的几行代码如何压缩出整个宇宙?

这些算法就像你的电脑在每次做决定时掷出的隐喻骰子。
  1. AlanZucconi

    我真的很好奇……你是怎么做到比我先发这个链接的?

  2. delduca

    我已经用这个替换了 Lua 的 random 函数。我之前在这里写过相关文章:https://nullonerror.org/2025/08/02/replacing-lua-s-math-rand...

  3. saithound

    啊对,Xorshift,21 世纪的 RANDU [1]。

    正如 adrian_b 在 2021 年解释的那样,对于非计算机科学领域的生成器,其实并没有更好的实际应用场景 [3]。

    [1] https://en.wikipedia.org/wiki/RANDU

    [2] https://arxiv.org/abs/1908.10020

    [3] https://news.ycombinator.com/item?id=28886698

同日更多故事

2026-08-15