关于截断正态分布(truncated normal distribution)这里不再赘述,简言之就是在均值和方差之外,再指定正态分布随机数群的上下限,如[μ-3σ, μ+3σ],
上代码:
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((lower - mu) / sigma, (upper - mu) / sigma, loc=mu, scale=sigma)
N = stats.norm(loc=mu, scale=sigma)
figure(1)
subplot(2,1,1)
plt.hist(X.rvs(10000), normed=True, bins=30) # 截断正态分布的直方图
subplot(2,1,2)
plt.hist(N.rvs(10000), normed=True, bins=30) # 常规正态分布的直方图
plt.show()
结果如图所示: