我知道,要想让numpy.random的随机性生根发芽,并能够重现它,我应该这样做:
import numpy as np np.random.seed(1234)
但是np.random.RandomState()是做什么的呢?
np.random.RandomState()
qybjjes11#
如果要设置对np.random...的调用将使用的种子,请使用np.random.seed:
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()
dddzy1tm2#
np.random.RandomState()构造了一个随机数生成器。它对np.random中的独立函数没有任何影响,但必须显式使用:
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])
lmyy7pcs3#
random.seed是填充random.RandomState容器的方法。从 numpy 文档:
numpy.random.seed(seed=None)
启动发电机。初始化RandomState时调用此方法。可以再次调用此方法以重新设定生成器的种子。有关详细信息,请参阅RandomState。
class numpy.random.RandomState
Mersenne Twister伪随机数生成器的容器。
8ehkhllq4#
random.RandomState()-一个类,提供了几种基于不同概率分布的方法。np.random.randomState.seed()-在初始化随机状态()时调用。
kx5bkwkv5#
Seed是全局伪随机数生成器,但randomstate是与其他伪随机数生成器隔离的伪随机数生成器,只影响特定变量。
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])
后者与前者不同,它意味着随机状态只在特定变量内部有效。
bf1o4zei6#
值得一提的是scikit-learn中的描述,[“控制随机性”] 1这个例子在其中一个模型中
6条答案
按热度按时间qybjjes11#
如果要设置对
np.random...
的调用将使用的种子,请使用np.random.seed
:使用类可避免影响全局numpy状态:
而且它保持着和以前一样的状态:
您可以使用以下命令查看“global”类的排序状态:
和您自己的类示例,其中:
dddzy1tm2#
np.random.RandomState()
构造了一个随机数生成器。它对np.random
中的独立函数没有任何影响,但必须显式使用:lmyy7pcs3#
random.seed是填充random.RandomState容器的方法。
从 numpy 文档:
启动发电机。
初始化RandomState时调用此方法。可以再次调用此方法以重新设定生成器的种子。有关详细信息,请参阅RandomState。
Mersenne Twister伪随机数生成器的容器。
8ehkhllq4#
random.RandomState()-一个类,提供了几种基于不同概率分布的方法。
np.random.randomState.seed()-在初始化随机状态()时调用。
kx5bkwkv5#
Seed
是全局伪随机数生成器,但randomstate
是与其他伪随机数生成器隔离的伪随机数生成器,只影响特定变量。它基本上和
Seed
一样,但是如下所述,我们没有给变量赋值randomstate。后者与前者不同,它意味着随机状态只在特定变量内部有效。
bf1o4zei6#
值得一提的是scikit-learn中的描述,[“控制随机性”] 1
这个例子在其中一个模型中