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值不同,导致每次循环的种子也不同,下面是改程序段的结果
上一篇: 环形进度条的简单实现