era*_*ran 58 python random numpy
我知道为了播种numpy.random的随机性,并且能够重现它,我应该:
import numpy as np
np.random.seed(1234)
Run Code Online (Sandbox Code Playgroud)
但是做了
np.random.RandomState()
什么?
ask*_*han 68
如果要设置调用的种子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]])
Run Code Online (Sandbox Code Playgroud)
如果要使用该类,则必须保存使用种子启动的类的实例:
r = np.random.RandomState(1234)
r.uniform(0, 10, 5)
#array([ 1.9151945 , 6.22108771, 4.37727739, 7.85358584, 7.79975808])
Run Code Online (Sandbox Code Playgroud)
并且它像以前一样保持状态:
r.rand(2,3)
#array([[ 0.27259261, 0.27646426, 0.80187218],
# [ 0.95813935, 0.87593263, 0.35781727]])
Run Code Online (Sandbox Code Playgroud)
您可以看到"全局"类的状态
np.random.get_state()
Run Code Online (Sandbox Code Playgroud)
和你自己的类实例
r.get_state()
Run Code Online (Sandbox Code Playgroud)
>>> 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])
Run Code Online (Sandbox Code Playgroud)
构造一个随机数生成器.它对独立功能没有任何影响np.random.RandomState(),但必须明确使用:
>>> 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])
Run Code Online (Sandbox Code Playgroud)
random.seed是一个填充random.RandomState容器的方法.
来自numpy docs:
numpy.random.seed(seed=None)
Run Code Online (Sandbox Code Playgroud)
种子发电机.
初始化RandomState时调用此方法.可以再次调用它来重新生成发电机.有关详细信息,请参阅RandomState.
class numpy.random.RandomState
Run Code Online (Sandbox Code Playgroud)
Mersenne Twister伪随机数发生器的容器.