生成可复制的伪随机数序列的算法,已知初始种子

1 投票
1 回答
1243 浏览
提问于 2025-04-16 16:54

我需要写一个轻量级的算法,来生成伪随机的无限数字序列,而且这个序列要非常依赖于初始的种子值。

在Python中,它应该像这样:

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

正如我所说的,使用相同的种子值,它必须在不同的机器和不同的时间生成相同的数字序列。有没有什么标准的方法可以做到这一点,还是我需要自己实现一个算法呢?

1 个回答

9

根据给定的要求,你可以选择常量序列。

generator = itertools.repeat(seed)

这有以下几个特点:

  • 占用资源少
  • 不一定是随机的
  • 强烈依赖于初始种子
  • 即使在不同的机器上也会产生相同的序列

编辑:为了让这个内容更完整,这里介绍如何使用Python的梅森旋转算法生成一系列随机数:

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

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

撰写回答