欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Numpy 的random函数

程序员文章站 2024-03-21 11:35:40
...

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

Numpy 的random函数

 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值不同,导致每次循环的种子也不同,下面是改程序段的结果

Numpy 的random函数

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

相关标签: Python