
𝐼
𝑛+1
=
𝑎(𝑧 mod 𝑞) −
𝑧
𝑞
𝑟, if 𝑎(𝑧 mod 𝑞) −
𝑧
𝑞
𝑟 ≥ 0
𝑎(𝑧 mod 𝑞) −
𝑧
𝑞
𝑟 + 𝑚, otherwise
1.3 Tausworthe 位移计数器法
Tausworthe 方法又称一般反馈位移计数器法, 它用于消除线性同余法中的关联. 假定已经有了一个随机
数列 {𝐼
1
, 𝐼
2
, · · · , 𝐼
𝑛
}, 那么就可以
𝐼
𝑛
= 𝐼
𝑛− 𝑝
⊕ 𝐼
𝑛−𝑞
其中 ⊕ 表示异或运算, 而 𝑝, 𝑞 是两个整数, 它们的选择是关键的. 一般来说, 它们的选择应该使得
𝑝
2
+ 𝑞
2
+ 1 𝑖𝑠 𝑝𝑟𝑖𝑚𝑒
这被称为梅森素数, 常见的可以列举如下
[31, 3], [98, 27], [250, 103], [1279, 216418], [9689, 84471183624444187]
一般来说,𝑝, 𝑞 越大产生的随机数质量越好. 通常使用线性同余法产生具有 𝑝 个数的初始序列, 然后再使
用 Tausworthe 方法产生随机数列
1.3.1 R250 产生器
R250 产生器是一种 Tausworthe 方法的特例, 它的参数为
𝑝 = 103, 𝑞 = 250
1.4 Fibonacci 延迟产生器
位移计数器是一种特殊的 Fibonacci 延迟产生器. 一般的 Fibonacci 延迟产生器的迭代公式为
𝐼
𝑛
= 𝐼
𝑛− 𝑝
⊗ 𝐼
𝑛−𝑞
mod 𝑚
其中 ⊗ 可以表示加减乘除异或等运算, 整数对 [𝑝, 𝑞] 表示延迟.Fibonacci 延迟产生器的周期非常长, 在
32
位机上可以达到
(
2
𝑝
− 1
)
2
31
1.4.1 带载减法产生器
带载减法产生器是一种复杂的类 Fibonacci 延迟产生器, 它的迭代公式为
𝐼
𝑛
= 𝐼
𝑛
−
22
− 𝐼
𝑛
−
43
− 𝐶