深入解析numpy.random.normal

发布时间:2023-05-19

一、numpy.random.normal函数

numpy.random.normal是numpy的随机抽样函数之一,用来生成符合正态分布的随机数。其函数原型如下:

numpy.random.normal(loc=0.0, scale=1.0, size=None)

其中,loc表示分布的均值,scale表示分布的标准差,size表示生成的随机数的形状。 下面我们来看一下如何使用该函数生成随机数。

import numpy as np
# 生成一个形状为(3,4)的矩阵,均值为0,标准差为1的随机数
x = np.random.normal(0, 1, (3, 4))
print(x)

输出结果如下:

array([[-0.95266681,  0.40985143, -0.06706892,  1.55458521],
       [-0.68607825,  0.3017523 , -0.26802721,  0.32318363],
       [ 0.80570355, -1.09996266, -2.60677328,  0.22833181]])

二、numpy.random.normal()

除了函数以外,numpy还提供了一种更加简单的方法生成符合正态分布的随机数——numpy.random.normal()。该函数可以直接作用于生成的矩阵,我们仍以前面的例子为例。

import numpy as np
# 生成一个形状为(3,4)的矩阵,均值为0,标准差为1的随机数
x = np.random.normal(size=(3, 4))
print(x)

输出结果如下:

array([[ 0.21269568,  0.15002288,  1.40993888,  1.33271572],
       [ 0.96861535,  0.30290143, -0.36537699, -0.28479163],
       [-1.07651303, -1.32463878, -1.2718044 ,  0.2071916 ]])

三、numpy.random.normal是什么意思

我们可以使用numpy.random.normal生成符合正态分布的随机数,那么正态分布是什么呢? 正态分布,又叫高斯分布,是一种常见的概率分布,也是一种偏态分布。正态分布可以用一个函数表示,其概率密度函数如下: 其中μ和σ分别表示分布的均值和标准差。μ表示分布的中心位置,σ表示分布的波动大小(也称分布的散布程度)。在正态分布中,大约有68%的数据在距离μ一个σ以内的区间中,大约有95%的数据在距离μ两个σ以内的区间中,大约有99.7%的数据在距离μ三个σ以内的区间中。

四、numpy.random.normal的应用

numpy.random.normal在实际应用中有着广泛的用途。下面我们通过一个例子来说明。 假设我们要通过随机数模拟一个随着时间推移,农场中每只母牛产出的牛奶量的变化。牛奶的产量符合正态分布,其均值为50升,标准差为10升。我们可以通过如下代码生成符合该分布的随机数。

import numpy as np
import matplotlib.pyplot as plt
# 参数设置
mu, sigma = 50, 10
num_samples = 1000
# 生成符合正态分布的随机数
cow_milk = np.random.normal(mu, sigma, num_samples)
# 绘图
plt.hist(cow_milk, bins=50, density=True, alpha=0.6, color='g')
plt.title('Milk Production of Cows')
plt.xlabel('Milk Production (liters/day)')
plt.ylabel('Probability Density')
plt.grid(True)
plt.show()

运行上述程序,我们可以得到如下的概率密度图: 我们可以看到,该图符合我们对该分布的预期。大多数牛每天都会产出约50升的牛奶,而在产量偏高或偏低的牛的数据分布上,呈现出很自然的左右倾斜的特点。

五、总结

通过对numpy.random.normal的分析,我们可以了解到该函数的功能和使用方法。numpy.random.normal函数是numpy的随机抽样函数之一,用来生成符合正态分布的随机数。numpy.random.normal还可以直接作用于生成的矩阵,生成符合正态分布的随机数。在实际应用中,numpy.random.normal可以用来模拟很多实际的随机现象,并且可以方便地绘制概率分布图。