欢迎访问宙启技术站
智能推送

用Python生成高斯分布随机数

发布时间:2023-12-16 11:48:12

高斯分布(正态分布)是自然界中常见的分布,也是统计学中非常重要的一种分布。Python中的numpy库提供了生成高斯分布随机数的函数,下面是一个使用例子,包括生成随机数、绘制直方图和计算概率密度函数。

## 生成随机数

首先需要导入numpy库,并使用numpy的random模块中的normal()函数来生成高斯分布随机数。normal()函数的参数包括均值μ和标准差σ,即normal(mu, sigma, size)。下面的例子生成了10000个均值为0、标准差为1的随机数。

import numpy as np

mu = 0
sigma = 1
size = 10000

random_numbers = np.random.normal(mu, sigma, size)

## 绘制直方图

生成随机数后,可以使用matplotlib库绘制直方图来可视化数据的分布情况。直方图将数据分组成多个区间,并统计每个区间中数据的数量。下面的例子使用matplotlib的pyplot模块绘制了生成的10000个随机数的直方图。

import matplotlib.pyplot as plt

plt.hist(random_numbers, bins=50, density=True, facecolor='g', alpha=0.75)

plt.xlabel('Value')
plt.ylabel('Probability')
plt.title('Histogram of Random Numbers')
plt.grid(True)

plt.show()

在上述代码中,plt.hist()函数的参数包括要绘制的数据、分组区间的数量(bins)、是否对纵轴进行归一化(density)、柱子的颜色(facecolor)和透明度(alpha)。运行代码后,将会显示一个直方图,横轴表示数值,纵轴表示概率密度。

## 计算概率密度函数

另外,可以使用scipy库的stats模块来计算高斯分布的概率密度函数(Probability Density Function, PDF)。下面的例子计算了均值为0、标准差为1的高斯分布在取值为x时的概率密度函数。

from scipy.stats import norm

x = np.linspace(-5, 5, num=1000)
pdf = norm.pdf(x, mu, sigma)

plt.plot(x, pdf)

plt.xlabel('Value')
plt.ylabel('Probability Density')
plt.title('Probability Density Function of Gaussian Distribution')

plt.show()

在上述代码中,np.linspace()函数用于生成-5到5的一系列等间隔数值,用于计算概率密度函数。norm.pdf()函数的参数分别是要计算的数值、均值和标准差。运行代码后,将会显示一个曲线图,横轴表示数值,纵轴表示概率密度。

以上为使用Python生成高斯分布随机数的例子,通过生成随机数、绘制直方图和计算概率密度函数,可以更好地了解高斯分布的形态和性质。在实际应用中,高斯分布在机器学习、金融、生物统计等领域有着广泛的应用。