在python中设置随机种子程序

问题描述 投票:57回答:5

我有一个相当大的程序,我在不同的文件中使用random模块中的函数。我希望能够在一个地方设置一次随机种子,使程序始终返回相同的结果。甚至可以在python实现吗?

python random seed
5个回答
90
投票

运行的主要python模块应该是import random并调用random.seed(n) - 这是在所有其他random导入之间共享的,只要其他地方不重置种子。


14
投票

zss的评论应突出显示为一个实际答案:

人们要注意的另一件事是:如果你正在使用numpy.random,那么你需要使用numpy.random.seed()来设置种子。使用random.seed()不会为numpy.random生成的随机数设置种子。这困惑了我一段时间。 -zss


8
投票

在您的应用程序的开头,调用random.seed(x)确保x始终相同。这将确保在每次运行应用程序期间伪随机数序列将是相同的。


2
投票

Jon Clements几乎回答了我的问题。然而,这不是真正的问题:事实证明,我的代码随机性的原因是numpy.linalg SVD,因为对于条件差的矩阵,它并不总是产生相同的结果!

因此,如果您遇到同样的问题,请务必在代码中检查一下!


-12
投票

您可以使用自己的随机数生成器轻松保证这一点。

只需选择三个较大的素数(假设这不是加密应用程序),并将它们插入a,b和c:a =((a * b)%c)这给出了一个产生相当随机数据的反馈系统。请注意,并非所有素数都能同样有效,但如果您只是进行模拟,则无关紧要 - 对于大多数模拟而言,您真正需要的是数字混乱,模式(伪随机,记忆)复杂到足以它与您的应用程序在某种程度上不匹配。

Knuth谈到这一点。

© www.soinside.com 2019 - 2024. All rights reserved.