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

前端 未结 4 1505
野的像风
野的像风 2020-11-30 17:58

I know that to seed the randomness of numpy.random, and be able to reproduce it, I should us:

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

but w

相关标签:
4条回答
  • 2020-11-30 18:43

    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.

    0 讨论(0)
  • 2020-11-30 18:53

    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()
    
    0 讨论(0)
  • 2020-11-30 18:57

    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])
    
    0 讨论(0)
  • 2020-11-30 19:01

    np.random.RandomState() - a class that provides several methods based on different probability distributions.
    np.random.RandomState.seed() - called when RandomState() is initialised.

    0 讨论(0)
提交回复
热议问题