numpy np.随机.种子()和np.随机.随机状态()之间的差异

euoag5mw  于 2023-01-13  发布在  其他
关注(0)|答案(6)|浏览(141)

我知道,要想让numpy.random的随机性生根发芽,并能够重现它,我应该这样做:

import numpy as np
np.random.seed(1234)

但是np.random.RandomState()是做什么的呢?

qybjjes1

qybjjes11#

如果要设置对np.random...的调用将使用的种子,请使用np.random.seed

np.random.seed(1234)
np.random.uniform(0, 10, 5)
#array([ 1.9151945 ,  6.22108771,  4.37727739,  7.85358584,  7.79975808])
np.random.rand(2,3)
#array([[ 0.27259261,  0.27646426,  0.80187218],
#       [ 0.95813935,  0.87593263,  0.35781727]])

使用类可避免影响全局numpy状态:

r = np.random.RandomState(1234)
r.uniform(0, 10, 5)
#array([ 1.9151945 ,  6.22108771,  4.37727739,  7.85358584,  7.79975808])

而且它保持着和以前一样的状态:

r.rand(2,3)
#array([[ 0.27259261,  0.27646426,  0.80187218],
#       [ 0.95813935,  0.87593263,  0.35781727]])

您可以使用以下命令查看“global”类的排序状态:

np.random.get_state()

和您自己的类示例,其中:

r.get_state()
dddzy1tm

dddzy1tm2#

np.random.RandomState()构造了一个随机数生成器。它对np.random中的独立函数没有任何影响,但必须显式使用:

>>> rng = np.random.RandomState(42)
>>> rng.randn(4)
array([ 0.49671415, -0.1382643 ,  0.64768854,  1.52302986])
>>> rng2 = np.random.RandomState(42)
>>> rng2.randn(4)
array([ 0.49671415, -0.1382643 ,  0.64768854,  1.52302986])
lmyy7pcs

lmyy7pcs3#

random.seed是填充random.RandomState容器的方法。
从 numpy 文档:

numpy.random.seed(seed=None)

启动发电机。
初始化RandomState时调用此方法。可以再次调用此方法以重新设定生成器的种子。有关详细信息,请参阅RandomState。

class numpy.random.RandomState

Mersenne Twister伪随机数生成器的容器。

8ehkhllq

8ehkhllq4#

random.RandomState()-一个类,提供了几种基于不同概率分布的方法。
np.random.randomState.seed()-在初始化随机状态()时调用。

kx5bkwkv

kx5bkwkv5#

Seed是全局伪随机数生成器,但randomstate是与其他伪随机数生成器隔离的伪随机数生成器,只影响特定变量。

rng = np.random.RandomState(0)
rng.rand(4)
# Out[1]: array([0.5488135 , 0.71518937, 0.60276338, 0.54488318])
rng = np.random.RandomState(0)
rng.rand(4)
# Out[2]: array([0.5488135 , 0.71518937, 0.60276338, 0.54488318])

它基本上和Seed一样,但是如下所述,我们没有给变量赋值randomstate。

np.random.RandomState(0)
# Out[3]: <mtrand.RandomState at 0xddaa288>
np.random.rand(4)
# Out[4]: array([0.62395295, 0.1156184 , 0.31728548, 0.41482621])
np.random.RandomState(0)
# Out[5]: <mtrand.RandomState at 0xddaac38>
np.random.rand(4)
# Out[6]: array([0.86630916, 0.25045537, 0.48303426, 0.98555979])

后者与前者不同,它意味着随机状态只在特定变量内部有效。

bf1o4zei

bf1o4zei6#

值得一提的是scikit-learn中的描述,[“控制随机性”] 1
这个例子在其中一个模型中

相关问题