1、 从参数为2,5的beta分布生成10000、50000、100000个随机数,然后绘制这些样点的直方图和pdf并与真实的pdf曲线进行比较
时间: 2024-06-06 16:06:52 浏览: 61
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import beta
# 生成随机数
n1 = 10000
n2 = 50000
n3 = 100000
a = 2
b = 5
data1 = np.random.beta(a, b, n1)
data2 = np.random.beta(a, b, n2)
data3 = np.random.beta(a, b, n3)
# 绘制直方图
fig, ax = plt.subplots(3, 2, figsize=(10, 10))
ax[0, 0].hist(data1, bins=50, density=True, alpha=0.5)
ax[1, 0].hist(data2, bins=50, density=True, alpha=0.5)
ax[2, 0].hist(data3, bins=50, density=True, alpha=0.5)
# 绘制pdf
x = np.linspace(0, 1, 100)
pdf = beta.pdf(x, a, b)
ax[0, 1].plot(x, pdf)
ax[1, 1].plot(x, pdf)
ax[2, 1].plot(x, pdf)
# 设置标题和标签
ax[0, 0].set_title(f'n={n1}')
ax[1, 0].set_title(f'n={n2}')
ax[2, 0].set_title(f'n={n3}')
ax[0, 0].set_ylabel('Frequency')
ax[1, 0].set_ylabel('Frequency')
ax[2, 0].set_ylabel('Frequency')
ax[2, 0].set_xlabel('x')
ax[2, 1].set_xlabel('x')
ax[0, 1].set_title('PDF')
ax[1, 1].set_title('PDF')
ax[2, 1].set_title('PDF')
plt.tight_layout()
plt.show()
# 输出结果
print(f'样本量为{n1}时,样本均值为{np.mean(data1)},标准差为{np.std(data1)}')
print(f'样本量为{n2}时,样本均值为{np.mean(data2)},标准差为{np.std(data2)}')
print(f'样本量为{n3}时,样本均值为{np.mean(data3)},标准差为{np.std(data3)}')
阅读全文