指定一个N(2,1)分布就是说你想要一个均值为2、方差(或标准差)为1的正态分布。在scipy术语中,平均值等于位置,标准差等于刻度。
要使用matplotlib绘制pdf,您需要在间隔[-1,5]上选择足够的点,以生成视觉平滑的图形。这就是
linspace
. 对于这些点中的每一个点,使用
norm.pdf
.
from scipy.stats import norm
from matplotlib import pyplot as plt
import numpy as np
x = np.linspace(-1, 5, 100, endpoint=True)
pdf = [norm.pdf(_, loc=2, scale=1) for _ in x]
plt.plot(x, pdf, 'b-')
plt.show()
在这里,我创建了一个大小为10的示例。我知道
norm.rvs
将在整个实线上产生偏差;因此,为了获得期望区间的偏差,我只需忽略该区间之外的偏差。每次调用“norm”。“rvs”生成一个长度为1的numpy“数组”。为了获得一个好的结果,我只选择该数组中的第一个项,并将其附加到整个样本中(如果在所需的间隔内)。
sample_size = 10
sample = []
while len(sample)<sample_size:
while True:
deviate = norm.rvs(loc=2, scale=1, size=1)[0]
if -1<=deviate<=5:
break
sample.append(deviate)
print (sample)