numpy.random.RandomState()和numpy.random.seed()解读

1 numpy.random.seed()用于设置随机数种子

1.1 参数seed

  • seed可以是一个int,满足 0<=seed<=2(321) ,这个条件的int都可以做参数。
  • seed可以是一个array
  • seed可以是None

用一句话总结numpy.random.seed()numpy.random.RandomState()的关系:

  • 相同处: 他们的参数都是随机数seed
  • 不同处: numpy.random.RandomState()更为复杂,完全可以代替numpy.random.seed()这条语句。
  • 随机数种子seed只有一次有效,在下一次调用产生随机数函数前没有设置seed,则还是产生随机数。

1.如果需要不产生随机数,则需要每次设置numpy.random.seed()

>>> import numpy
>>> #注意这里是两条语句
>>> numpy.random.seed(0);numpy.random.rand(4)
array([ 0.5488135 ,  0.71518937,  0.60276338,  0.54488318])
>>>numpy.random.seed(0);numpy.random.rand(4)
array([ 0.5488135 ,  0.71518937,  0.60276338,  0.54488318])
>>>numpy.random.seed(0);numpy.random.rand(4)
array([ 0.5488135 ,  0.71518937,  0.60276338,  0.54488318])

2.如果需要每次都产生随机数,则可以将随机数seed设置成None,或者不设置。

>>> import numpy
>>> numpy.random.seed(None)
>>> numpy.random.rand(4)
array([ 0.5488135 ,  0.71518937,  0.60276338,  0.54488318])
>>> numpy.random.rand(4)
array([ 0.4236548 ,  0.64589411,  0.43758721,  0.891773  ])
>>> numpy.random.rand(4)
array([ 0.96366276,  0.38344152,  0.79172504,  0.52889492])

2 numpy.random.RandomState()设置seed同时产生随机数

2.1 numpy.random.RandomState()

>>> import numpy
>>> numpy.random.RandomState(0).rand(4)
array([ 0.5488135 ,  0.71518937,  0.60276338,  0.54488318])
>>> numpy.random.RandomState(0).rand(4)
array([ 0.5488135 ,  0.71518937,  0.60276338,  0.54488318])
>>> numpy.random.RandomState(0).rand(4)
array([ 0.5488135 ,  0.71518937,  0.60276338,  0.54488318])
#暂不清楚这个seed整数有什么用
>>> numpy.random.RandomState(None).rand(4)
array([ 0.5488135 ,  0.71518937,  0.60276338,  0.54488318])
>>> numpy.random.RandomState(None).rand(4)
array([ 0.4236548 ,  0.64589411,  0.43758721,  0.891773  ])
>>> numpy.random.RandomState(None).rand(4)
array([ 0.96366276,  0.38344152,  0.79172504,  0.52889492])

参考网页:
numpy官方文档v1.12

你可能感兴趣的:(numpy)