Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 生成伪随机数序列的算法,已知初始种子可重复_Python_Algorithm_Numbers_Generator_Series - Fatal编程技术网

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

Python 生成伪随机数序列的算法,已知初始种子可重复,python,algorithm,numbers,generator,series,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 正如我所写的,同一种子必须产生相同的数字序列,即使在不同的机器和不同的时间。是否有一个

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

在python中,它应该是

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

正如我所写的,同一种子必须产生相同的数字序列,即使在不同的机器和不同的时间。是否有一个标准模式,或者我必须实现自己的算法?

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

generator = itertools.repeat(seed)
这是

  • 轻量级
  • 不一定是随机的
  • 强烈依赖于最初的种子
  • 即使在不同的机器上也能生产相同的系列
编辑:要使这成为一个实际的答案,下面是如何使用Python的Mersenne Twister生成一系列随机数:

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

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

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

generator = itertools.repeat(seed)
这是

  • 轻量级
  • 不一定是随机的
  • 强烈依赖于最初的种子
  • 即使在不同的机器上也能生产相同的系列
编辑:要使这成为一个实际的答案,下面是如何使用Python的Mersenne Twister生成一系列随机数:

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

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

还有其他要求吗?否则,我建议使用
itertools.count
…如果你的无穷级数不必是随机的,为什么不使用像+1这样简单的东西呢?(如果种子数是5,那么序列数是5,6,7,…)-或者任何其他简单的算术函数?平凡的
def numgen(x):收益率x是无限的,非随机的,强烈依赖于种子数,并且总是一样工作。另外,对生成器使用
next
(没有
getNext
)@Elad:我声称找到了最愚蠢的一个:)@dancek:这只会产生一次种子,然后引发
StopIteration
。还有其他要求吗?否则,我建议使用
itertools.count
…如果你的无穷级数不必是随机的,为什么不使用像+1这样简单的东西呢?(如果种子数是5,那么序列数是5,6,7,…)-或者任何其他简单的算术函数?平凡的
def numgen(x):收益率x是无限的,非随机的,强烈依赖于种子数,并且总是一样工作。另外,对生成器使用
next
(没有
getNext
)@Elad:我声称找到了最愚蠢的一个:)@dancek:这只会产生一次种子,然后引发
StopIteration
。重复相同的数字是不够的。我需要在数字生成过程中进行某种变化。@Emilio:这个答案和所有评论的要点是,您需要具体说明您的需求是什么。例如,你可以告诉我们你需要这个系列做什么。如果唯一的附加要求是“不恒定”,那么只需从种子开始计数即可。如果这不是你想要的,请指定你需要的。感谢你的建议=)+1解释random.random实例。官方文件没有很好地涵盖这一点。重复同样的数字是不够的。我需要在数字生成过程中进行某种变化。@Emilio:这个答案和所有评论的要点是,您需要具体说明您的需求是什么。例如,你可以告诉我们你需要这个系列做什么。如果唯一的附加要求是“不恒定”,那么只需从种子开始计数即可。如果这不是你想要的,请指定你需要的。感谢你的建议=)+1解释random.random实例。官方文件没有很好地涵盖这一点。