生成伪随机数的算法系列,可重现知道初始种子

时间:2011-05-03 14:56:51

标签: python algorithm numbers generator series

我必须编写一个轻量级算法来生成伪随机无限数字序列,并且强烈依赖于初始种子。

在python中它应该像

seed = 3345                 // Common number
generator = numgen(seed)
while True:
    generator.getNext()     // With the same seed it produce same numbers

正如我所写的,即使在不同的机器和不同的时间,它也必须生成相同的数字系列。是否有标准模式或我是否必须实现自己的算法?

1 个答案:

答案 0 :(得分:9)

根据给定的要求,您可以选择常数系列

generator = itertools.repeat(seed)

这是

  • 轻质
  • 不一定是随机的
  • 强烈依赖初始种子
  • 即使在不同的机器上生成相同的系列

编辑:为了使其成为一个真正的答案,以下是如何使用Python的Mersenne Twister生成一系列随机数:

seed = 3345
maximum = 1000000
generator = random.Random(seed)
while True:
    print generator.random(maximum)

创建自己的random.Random实例可确保从其他地方调用随机数生成器不会干扰您的随机状态。