Difference between np.random.seed() and np.random.RandomState() Difference between np.random.seed() and np.random.RandomState() numpy numpy

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.