In [1]:
import numpy as np

一、numpy生成随机数

1. numpy.random.rand(d0, d1, …, dn),产生[0,1)之间均匀分布的随机浮点数,其中d0,d1....表示传入的数组形状。

In [7]:
np.random.rand(2,3)
Out[7]:
array([[0.31090976, 0.81642491, 0.9551444 ],
       [0.51820417, 0.30544172, 0.34014524]])

2.numpy.random.randn(d0, d1, …, dn)从标准正态分布中返回一个或多个样本值。 参数表示样本的形状。所谓标准正态分布就是指这个函数产生的随机数,服从均值为0,方差为1的分布,使用方法和rand()类似。

In [8]:
np.random.randn(2,3)
Out[8]:
array([[ 0.18409438, -0.05650729, -0.2533039 ],
       [ 0.27646065, -0.54617705, -0.15106893]])

3. 指定数学期望和方差的正态分布

For random samples from N(mu, sigma^2), use:

sigma * np.random.randn(...) + mu

如果希望产生的一组随机数,服从均值为mu,方差为sigma^2的正态分布,可以用上述公式完成。

In [9]:
2.5 * np.random.randn(2,4)+3  #2.5是标准差,3是期望
Out[9]:
array([[3.82160858, 3.07462392, 4.097577  , 4.7977468 ],
       [6.28584951, 6.17907239, 5.5979966 , 0.22594141]])

4.numpy.random.random()方法返回随机生成的一个实数(浮点数),它在[0,1)范围内

In [15]:
np.random.random(11)
Out[15]:
array([0.2345846 , 0.58571588, 0.38349204, 0.47497793, 0.44381991,
       0.6646621 , 0.74066025, 0.31964029, 0.62232324, 0.72576081,
       0.43982542])
In [16]:
np.random.random((3,2))
Out[16]:
array([[0.70429169, 0.86815014],
       [0.52393792, 0.25045842],
       [0.08883368, 0.05015463]])

5.randint用于生成指定范围内的整数

具体函数:randint(low, high=None, size=None, dtype='l')

其中low是整型元素,表示范围的下限,可以取到。high表示范围的上限,不能取到。也就是左闭右开区间。

high没有填写时,默认生成随机数的范围是[0,low)

size可以是int整数,或者int型的元组,表示产生随机数的个数,或者随机数组的形状。

dtype表示具体随机数的类型,默认是int,可以指定成int64。

In [21]:
np.random.randint(10)
Out[21]:
2
In [23]:
np.random.randint(10,size=8)
Out[23]:
array([1, 4, 4, 5, 0, 6, 8, 2])
In [24]:
np.random.randint(10,size=(2,3))
Out[24]:
array([[8, 7, 9],
       [3, 7, 0]])

6.uniform从指定范围内产生均匀分布的随机浮点数

函数:uniform(low=0.0, high=1.0, size=None)

low表示范围的下限,float型,或float型数组,默认为0.0.

high表示范围的上限,float型,或float型数组,默认为1.0.

size表示“形状”或“个数”,int型,或int型元组,默认为None。

In [28]:
# 默认产生一个[0,1)之间随机浮点数
np.random.uniform()
Out[28]:
0.2260782145662672
In [29]:
np.random.uniform(low=1,high=10,size=(2,3))
Out[29]:
array([[5.13734596, 8.55049717, 4.0533755 ],
       [5.94352788, 4.19428105, 6.91976845]])

7. seed基本用法

np.random.seed(),使得随机数据可预测。

如果在seed()中传入的数字相同,那么接下来生成的随机数序列都是相同的,仅作用于最接近的那句随机数产生语句。

In [40]:
np.random.seed(10)
np.random.randint(10,size=(2,3))
Out[40]:
array([[9, 4, 0],
       [1, 9, 0]])