就是在均值和方差之外,再指定正态分布随机数群的上下限,如 [ μ − 3 σ , μ + 3 σ ] [\mu-3\sigma,\mu+3\sigma] [μ−3σ,μ+3σ]
stats.truncnorm()参数
X = stats.truncnorm(-2, 2, loc=mu, scale=sigma)
-2 2是截断的正态分布的方差倍数大小,loc是均值,scale是方差 这个的截断的大小是 [ μ − 2 σ , μ + 2 σ ] [\mu-2\sigma,\mu+2\sigma] [μ−2σ,μ+2σ]
import matplotlib.pyplot as plt
import scipy.stats as stats
import pylab
from pylab import *
mu, sigma = 5, 0.7
lower, upper = mu - 2 * sigma, mu + 2 * sigma # 截断在[μ-2σ, μ+2σ]
X = stats.truncnorm(-2, 2, loc=mu, scale=sigma)
N = stats.norm(loc=mu, scale=sigma)
figure(1)
subplot(2, 1, 1)
plt.hist(X.rvs(10000)) # 截断正态分布的直方图
subplot(2, 1, 2)
plt.hist(N.rvs(10000)) # 常规正态分布的直方图
plt.show()
这个代码中的X.rvs(10000)是说在X中随机选取10000个数据