为什么 23、17 和 26 是随机数生成的魔法数字?
Xorshift Generators
此刻,全球数十亿设备正在运行同一段代码,它们藏在浏览器和服务器深处,控制着游戏里的每一次事件和每一张卡牌。我是 Alan Zucconi,本文将带你深入剖析 xorshift 生成器这一伪随机算法家族。我们将探索 George Marsaglia 在 2003 年提出的基于 XOR 和位移的算法,揭示为什么 13、17 和 5 这样的特定位移参数能生成最大周期的序列,而随意更改这些“魔法数字”却会导致随机性崩塌。从 No Man's Sky 到 Minecraft,这些看似简单的几行代码如何压缩出整个宇宙?
这些算法就像你的电脑在每次做决定时掷出的隐喻骰子。
HN 评论区
31- AlanZucconi
我真的很好奇……你是怎么做到比我先发这个链接的?
- delduca
我已经用这个替换了 Lua 的 random 函数。我之前在这里写过相关文章:https://nullonerror.org/2025/08/02/replacing-lua-s-math-rand...
- saithound
啊对,Xorshift,21 世纪的 RANDU [1]。
正如 adrian_b 在 2021 年解释的那样,对于非计算机科学领域的生成器,其实并没有更好的实际应用场景 [3]。
[1] https://en.wikipedia.org/wiki/RANDU