如何在numpy中设置固定随机种子?

6

我曾经以为设置种子会每次得到相同的结果。但是我每次得到的结果都不同。如何设置种子,使得我们每次获得相同的结果?

以下是MWE:

import numpy as np
import pandas as pd


random_state = 100
np.random.state = random_state
np.random.seed = random_state

mu, sigma = 0, 0.25
eps = np.random.normal(mu,sigma,size=100)
print(eps[0])

每次运行得到的结果都不同。

更新:

我不能使用np.random.seed(xxx)


@SpghttCd,那个答案使用了np.random.seed(42),但在我的情况下该函数无法工作。 - BhishanPoudel
2
@更新,因为您已经通过将其设置为“100”而覆盖了np.random.seed。关闭所有内容并重新开始,而不要覆盖。或者尝试使用del np.random.seed - SpghttCd
哦!我明白了,非常感谢。 - BhishanPoudel
另一个重复的问题:https://stackoverflow.com/questions/26309911/making-numpy-random-draws-consistent-for-reproducability - Warren Weckesser
我知道会有一个昵称为@update的用户 - 抱歉打扰了... :) - SpghttCd
显示剩余3条评论
2个回答

20

np.random.seed 是一个函数,你需要调用它,而不是赋值给它。例如:

np.random.seed(42)

9

np.random.seed是一个设置全局随机状态的函数。作为替代方案,您也可以使用np.random.RandomState(x)来实例化一个随机状态类以在本地获得可重现性。根据你的代码,我提供以下替代选项。

import numpy as np
random_state = 100
rng=np.random.RandomState(random_state )
mu, sigma = 0, 0.25
eps = rng.normal(mu,sigma,size=100) # Difference here
print(eps[0])

关于np.random.seednp.random.RandomState的更多细节可以在这里找到。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接