Difference between np.random.seed() and np.random.RandomState()
If you want to set the seed that calls to np.random...
will use, use 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]])
Use the class to avoid impacting the global numpy state:
r = np.random.RandomState(1234)
r.uniform(0, 10, 5)
#array([ 1.9151945 , 6.22108771, 4.37727739, 7.85358584, 7.79975808])
And it maintains the state just as before:
r.rand(2,3)
#array([[ 0.27259261, 0.27646426, 0.80187218],
# [ 0.95813935, 0.87593263, 0.35781727]])
You can see the state of the sort of 'global' class with:
np.random.get_state()
and of your own class instance with:
r.get_state()
np.random.RandomState()
constructs a random number generator. It does not have any effect on the freestanding functions in np.random
, but must be used explicitly:
>>> 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])
random.seed is a method to fill random.RandomState container.
from numpy docs:
numpy.random.seed(seed=None)
Seed the generator.
This method is called when RandomState is initialized. It can be called again to re-seed the generator. For details, see RandomState.
class numpy.random.RandomState
Container for the Mersenne Twister pseudo-random number generator.