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

使用scipy.statstruncnorm()函数在Python中生成截断正态分布的随机变量

发布时间:2023-12-26 21:10:38

scipy.stats.truncnorm()函数用于生成截断正态分布的随机变量。截断正态分布是指将正态分布的一部分截断为特定范围内的分布。

该函数的语法为:

scipy.stats.truncnorm(a, b, loc=0, scale=1)

参数解释:

- a:截断正态分布的下限,必须是负无穷到正无穷之间的实数。

- b:截断正态分布的上限,必须是负无穷到正无穷之间的实数。

- loc:正态分布的均值。

- scale:正态分布的标准差。

下面是一个使用例子,生成1000个服从截断正态分布的随机变量,取值范围在[-2, 2],均值为0,标准差为1的情况:

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

# 设置随机数种子
np.random.seed(0)

# 定义截断正态分布的下限、上限、均值和标准差
a, b = -2, 2
loc, scale = 0, 1

# 生成1000个截断正态分布的随机变量
rvs = truncnorm.rvs(a, b, loc=loc, scale=scale, size=1000)

# 绘制直方图
plt.hist(rvs, bins=30, density=True, alpha=0.6)
plt.xlabel('Value')
plt.ylabel('Probability Density')
plt.title('Truncated Normal Distribution')
plt.show()

运行以上代码,将会得到一个直方图,表示生成的截断正态分布的随机变量的概率密度分布情况。

通过调整参数a、b、loc和scale的值,可以生成不同范围、均值和标准差的截断正态分布的随机变量。