翻阅我的 3 卷 TAOCP,我找不到短随机序列的来源:
// Seed always in 1..0x10000
Seed = (Seed * const) % 0x10001
还有一个算法,可能还有一个 MIX 程序来验证 const 以便返回所有 2^16 值。至少那是我记得的。同样在相同的一般领域中,上述递归有效,因为 (2^16)+1 是素数,但可惜 (2^32)+1 和 (2^64)-1 都不是素数。
FWIW,将 const 替换为 iconst = 1/const (mod 0x10001) 以相反的顺序生成序列。即 const*iconst%0x10001 = 1