我正在用 Python 编写一个 LCG 函数,我将用它来模拟蒙特卡罗类型的硬币翻转和生成运行。我面临的问题是,当我生成一个随机数列表时,这些数字的模式使得奇数和偶数交替出现。我不知道这是 LCG 函数本身的属性,还是我生成数字的方式有误。
这是我的代码:
def seedLCG(initVal):
global rand
rand = initVal
def lcg():
a = 1140671485
c = 128201163
m = 2**24
global rand
rand = (a*rand + c) % m
return rand
seedLCG(1)
for i in range(10):
print lcg()
返回值:
10581448
11595891
1502322
14136437
11348076
1403015
9622582
11013417
11529808
15836891
我假设我不需要担心溢出和大小,因为 int 和 long 可以根据 Python 的需要互换。