模拟截断正态分布: 使用 Numpy 包模拟100万个从截断正态分布中抽取的成绩。 参数:均值为75,标准差为20,截断在0和100之间。 步骤: 函数确保分布在0和100之间截断。 生成数据并使用 matplotlib 绘制包含100个柱状图的直方图。
时间: 2024-09-16 17:05:27 浏览: 71
要使用numpy模拟截断正态分布,并绘制包含100万个成绩的直方图,你可以按照以下步骤操作:
首先,确保已经安装了numpy和matplotlib库。如果没有安装,可以使用pip安装:
```bash
pip install numpy matplotlib
```
然后,编写Python代码实现这一过程:
```python
import numpy as np
import matplotlib.pyplot as plt
# 定义参数
mu = 75 # 均值
sigma = 20 # 标准差
lower_bound = 0 # 截断下界
upper_bound = 100 # 截断上界
# 使用numpy的truncnorm函数生成截断正态分布
truncated_normal_data = np.truncnorm((lower_bound - mu) / sigma, (upper_bound - mu) / sigma, loc=mu, scale=sigma)
# 生成100万个样本
num_samples = 1_000_000
scores = truncated_normal_data.rvs(size=num_samples)
# 计算并绘制直方图
plt.hist(scores, bins=100, density=True, alpha=0.5) # 密度直方图有助于可视化
plt.xlabel('分数')
plt.ylabel('频率')
plt.title('截断正态分布成绩分布 (均值=75,标准差=20)')
plt.show()
```
这段代码首先创建了一个从截断正态分布中抽样的数组,然后使用matplotlib绘制了包含100万个样本的直方图,显示了成绩的分布情况。
阅读全文