📜  来自正态分布的 python 随机数 - Python (1)

📅  最后修改于: 2023-12-03 15:26:34.807000             🧑  作者: Mango

来自正态分布的 python 随机数 - Python

正态分布(也称为高斯分布)是一种常见的概率分布,具有中心极限定理,在自然界和社会科学中经常出现。Python 中的 numpy 模块可以用来生成来自正态分布的随机数。

步骤

要生成来自正态分布的随机数,需要完成以下步骤:

  1. 导入 numpy 模块。
  2. 使用 numpy 模块中的 random 函数并传入 loc 和 scale 参数(即均值和标准差)。
  3. 利用 matplotlib 模块中的 hist 函数可视化生成的随机数分布情况。

下面是详细的示例代码:

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():显示图像。
结论

通过以上代码可以生成来自正态分布的随机数,并对随机数的分布情况进行了可视化展示。此外,也可以通过调整均值和标准差等参数,生成不同参数下的正态分布随机数。