用 scipy.stats 方法产生均值为 2 标准差为 5 的正态分布的随机整数 100 个,并绘制出对应的直方图和概率密度曲线
时间: 2024-04-21 17:29:58 浏览: 109
【图像压缩】基于matlab GUI Haar小波变换图像压缩(含PSNR)【含Matlab源码 9979期】.zip
好的,我来为您解答这个问题。
首先,我们需要导入必要的库:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
```
接着,我们可以使用 `norm.rvs()` 方法来生成均值为 2 标准差为 5 的正态分布的随机整数 100 个:
```python
mean = 2
std = 5
size = 100
data = norm.rvs(loc=mean, scale=std, size=size).astype(int)
```
这里,`loc` 参数指定分布的均值,`scale` 参数指定分布的标准差,`size` 参数指定随机整数的个数,`.astype(int)` 方法将随机数转化为整数类型。
接着,我们可以使用 `plt.hist()` 方法来绘制直方图:
```python
plt.hist(data, bins=10, density=True, alpha=0.6, color='g')
plt.title('Histogram of Normal Distribution')
plt.xlabel('Value')
plt.ylabel('Frequency')
```
这里,`bins` 参数指定直方图的柱子数量,`density` 参数指定是否绘制概率密度曲线,`alpha` 参数指定柱子的透明度,`color` 参数指定柱子的颜色。
最后,我们可以使用 `norm.pdf()` 方法来绘制概率密度曲线:
```python
x = np.linspace(mean - 3*std, mean + 3*std, 100)
plt.plot(x, norm.pdf(x, mean, std), 'r-', lw=2)
plt.show()
```
这里,`x` 是横坐标,`norm.pdf()` 方法用于计算概率密度值。
完整的代码如下:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
mean = 2
std = 5
size = 100
data = norm.rvs(loc=mean, scale=std, size=size).astype(int)
plt.hist(data, bins=10, density=True, alpha=0.6, color='g')
plt.title('Histogram of Normal Distribution')
plt.xlabel('Value')
plt.ylabel('Frequency')
x = np.linspace(mean - 3*std, mean + 3*std, 100)
plt.plot(x, norm.pdf(x, mean, std), 'r-', lw=2)
plt.show()
```
运行后,会得到一张包含直方图和概率密度曲线的图形,如下所示:
![histogram](https://img-blog.csdnimg.cn/20211004170215160.png)
阅读全文