📅  最后修改于: 2023-12-03 15:26:34.807000             🧑  作者: Mango
正态分布(也称为高斯分布)是一种常见的概率分布,具有中心极限定理,在自然界和社会科学中经常出现。Python 中的 numpy 模块可以用来生成来自正态分布的随机数。
要生成来自正态分布的随机数,需要完成以下步骤:
下面是详细的示例代码:
import numpy as np
import matplotlib.pyplot as plt
# 设置均值和标准差
mu, sigma = 0, 0.1
# 生成1000个来自正态分布的随机数
s = np.random.normal(mu, sigma, 1000)
# 绘制直方图
count, bins, ignored = plt.hist(s, 30, density=True)
# 绘制正态分布曲线
plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *
np.exp( - (bins - mu)**2 / (2 * sigma**2) ),
linewidth=2, color='r')
plt.show()
以上代码的详细解释如下:
import numpy as np
:导入 numpy 模块,并使用 np
来表示。import matplotlib.pyplot as plt
:导入 matplotlib 模块,并使用 plt
来表示。mu, sigma = 0, 0.1
:设置正态分布的均值和标准差,本示例中均值为 0,标准差为 0.1。np.random.normal(mu, sigma, 1000)
:生成1000个均值为 mu
,标准差为 sigma
的正态分布的随机数。plt.hist(s, 30, density=True)
:绘制随机数的直方图,并将参数 density
设置为 True
,以使其成为概率密度。plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) * np.exp( - (bins - mu)**2 / (2 * sigma**2) ), linewidth=2, color='r')
:绘制正态分布曲线。其中,bins
是直方图中每个直柱的边界,1/(sigma * np.sqrt(2 * np.pi)) * np.exp( - (bins - mu)**2 / (2 * sigma**2) )
是正态分布的概率密度函数,linewidth
设置曲线的线宽,color
设置曲线的颜色。plt.show()
:显示图像。通过以上代码可以生成来自正态分布的随机数,并对随机数的分布情况进行了可视化展示。此外,也可以通过调整均值和标准差等参数,生成不同参数下的正态分布随机数。