如何使用random.RandomState

kuj*_*jaw 3 python random numpy random-seed

每次运行脚本时,我都希望我的脚本能够创建相同的数字数组.早些时候我使用的是np.random.seed().例如:

np.random.seed(1)
X = np.random.random((3,2))
Run Code Online (Sandbox Code Playgroud)

我已经读过,而不是np.random.seed()应该使用RandomState.但我不知道如何使用它,尝试了一些组合但没有工作.

DSM*_*DSM 10

确实,有时候确保从特定(非全局)流中获取熵是有利的.基本上,您所要做的就是创建一个RandomState对象,然后使用它的方法而不是使用numpy的随机函数.例如,而不是

>>> np.random.seed(3)
>>> np.random.rand()
0.5507979025745755
>>> np.random.randint(10**3, 10**4)
7400
Run Code Online (Sandbox Code Playgroud)

你可以写

>>> R = np.random.RandomState(3)
>>> R
<mtrand.RandomState object at 0x7f79b3315f28>
>>> R.rand()
0.5507979025745755
>>> R.randint(10**3, 10**4)
7400
Run Code Online (Sandbox Code Playgroud)

所以你需要做的就是制作R然后使用R.而不是np.random.- 非常简单.并且您可以根据需要传递R,并拥有多个随机流(如果您希望某个过程相同而另一个更改,等等)