python 创建一定区间内的满足正态分布的随机数

python 创建一定区间内的满足正态分布的随机数

例:1.创建 [ 3.5 , 6 ] [3.5,6] [3.5,6]的区间内, μ = 5 , σ = 0.7 \mu=5, \sigma=0.7 μ=5,σ=0.7的满足正态分布的随机数;
2.创建 μ = 5 , σ = 0.7 \mu=5, \sigma=0.7 μ=5,σ=0.7的满足正态分布的随机数。

import scipy.stats as stats

lower, upper = 3.5, 6
mu, sigma = 5, 0.7
#X表示含有最大最小值约束的正态分布
#N表示不含最大最小值约束的正态分布
X = stats.truncnorm(
    (lower - mu) / sigma, (upper - mu) / sigma, loc=mu, scale=sigma)#有区间限制的随机数
N = stats.norm(loc=mu, scale=sigma)#无区间限制的随机数
a = X.rvs(5)#取其中的5个数,赋值给a;a为array类型

#作图:第一张表示带区间约束的正态分布;第二张表示不带区间约束的正态分布#
import matplotlib.pyplot as plt
fig, ax = plt.subplots(2, sharex=True)
ax[0].hist(X.rvs(10000), density=True)
ax[1].hist(N.rvs(10000), density=True)
plt.show()

参考:

https://stackoverflow.com/questions/18441779/how-to-specify-upper-and-lower-limits-when-using-numpy-random-normal

你可能感兴趣的:(学习笔记,python,scipy)