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

Emi*_*lio 1 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
Run Code Online (Sandbox Code Playgroud)

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

Sve*_*ach 9

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

generator = itertools.repeat(seed)
Run Code Online (Sandbox Code Playgroud)

这是

  • 轻量级
  • 不一定随机
  • 强烈依赖初始种子
  • 甚至在不同的机器上生产相同的系列

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

seed = 3345
maximum = 1000000
generator = random.Random(seed)
while True:
    print generator.random(maximum)
Run Code Online (Sandbox Code Playgroud)

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