Numpy 的random函数

1、np.random.RandomState()

计算机实现的随机数生成通常为伪随机数生成器,为了使得具备随机性的代码最终的结果可复现,需要设置相同的种子值;

  • np.random.randn(…) ⇒
    • rng = np.random.RandomState(123)
    • rng.randn(…)

2、np.random.uniform()

首先从numpy.random.uniform说起(也即其他函数是对该函数的进一步封装)。

numpy.random.uniform(low=0.0, high=1.0, size=None)

顾名思义,从一个均匀分布([low, high):半开区间)中进行采样。

例如产生[1, 2)(五行五列):

>>> import numpy
>>> np.random.uniform(1, 2, (5, 5))
array([[ 1.16902081,  1.90805984,  1.30759311,  1.90598113,  1.32047656],
       [ 1.58571077,  1.88009484,  1.66531622,  1.0262826 ,  1.40534658],
       [ 1.81087389,  1.87981194,  1.65670468,  1.46972606,  1.66454007],
       [ 1.81041299,  1.52561204,  1.79701198,  1.17840313,  1.86364978],
       [ 1.72654371,  1.92870279,  1.11207754,  1.5091156 ,  1.35108628]])

random 解释:https://docs.scipy.org/doc/numpy-1.10.0/reference/routines.random.html

3、举例:

rng = numpy.random.RandomState(23355)

arrayA = rng.uniform(0,1,(2,3))

该段代码的目的是产生一个2行3列的assarray,其中的每个元素都是[0,1]区间的均匀分布的随机数

这里看以看到,有一个23355这个数字,其实,它是伪随机数产生器的种子,也就是“the starting point for a sequence of pseudorandom number”

对于某一个伪随机数发生器,只要该种子(seed)相同,产生的随机数序列就是相同的

下面给出几个小例子

# 仍以上面的seed为例,但执行多次 

# 利用循环,执行4次 

import numpy 4 for i in [1,2,3,4]: 

rng = numpy.random.RandomState(23455)

arrayA = rng.uniform(0,1,(2,3))

print arrayA

 import numpy 

for i in [1,2,3,4]: 

  rng = numpy.random.RandomState(23455+i) 

  arrayA = rng.uniform(0,1,(2,3)) 

  print ('i = %s' % (i)) 

   print (arrayA)

这里,我们做了一个小小的更改,每次循环的种子都加入了i,由于每次循环i值不同,导致每次循环的种子也不同,下面是改程序段的结果

参考:https://blog.csdn.net/xylin1012/article/details/71931900

猜你喜欢

转载自blog.csdn.net/m0_37712157/article/details/81209712