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

在Python中生成服从截断正态分布的随机数(使用scipy.statstruncnorm()方法)

发布时间:2023-12-26 21:08:18

在Python中,可以使用scipy.stats.truncnorm方法来生成服从截断正态分布的随机数。truncnorm方法需要指定截断区间的下限和上限,还可以指定分布的均值和标准差。

下面是一个完整的例子,展示如何使用scipy.stats.truncnorm方法生成服从截断正态分布的随机数:

import numpy as np
from scipy.stats import truncnorm
import matplotlib.pyplot as plt

# 定义截断区间的下限、上限
a = 0
b = 1

# 计算截断区间的均值和方差
mean, std = 0.5, 0.1
lower, upper = (a - mean) / std, (b - mean) / std

# 生成随机数
samples = truncnorm.rvs(lower, upper, loc=mean, scale=std, size=1000)

# 绘制直方图
plt.hist(samples, bins=30, density=True, alpha=0.7)

# 绘制密度函数曲线
x = np.linspace(0, 1, 100)
plt.plot(x, truncnorm.pdf(x, lower, upper, loc=mean, scale=std), 'r-', lw=2)

# 显示图像
plt.xlabel('Value')
plt.ylabel('Density')
plt.title('Truncated Normal Distribution')
plt.show()

在上述例子中,我们生成1000个服从截断正态分布的随机数,并绘制了直方图和其密度函数曲线。截断区间的下限设为0,上限设为1。分布的均值为0.5,标准差为0.1。我们使用truncnorm.rvs方法生成随机数,并使用truncnorm.pdf方法计算密度函数的值。然后,使用matplotlib库将生成的随机数的直方图和密度函数曲线进行绘制。

注意,为了使用scipy.stats.truncnorm方法,需要先安装SciPy库。可以通过pip等包管理工具安装。