通过numpy随机数绘制正态分布图
时间: 2024-10-15 14:06:37 浏览: 33
在Python中,我们可以使用NumPy库来生成正态分布的随机数,并结合Matplotlib库来绘制图表。以下是一个简单的步骤:
首先,你需要安装这两个库,如果尚未安装,可以使用pip安装:
```bash
pip install numpy matplotlib
```
然后,你可以使用NumPy的`normal()`函数生成正态分布的数据,它接受均值(mean)、标准差(std-dev)以及需要生成的数量作为参数。例如,生成平均数为0,标准差为1的一组数据:
```python
import numpy as np
mean = 0
std_dev = 1
size = 1000 # 生成1000个随机样本
random_numbers = np.random.normal(mean, std_dev, size)
```
接着,使用Matplotlib的`hist()`函数绘制直方图:
```python
import matplotlib.pyplot as plt
plt.hist(random_numbers, bins='auto', alpha=0.5, color='g') # 'auto'选择合适的bins
plt.title('Normal Distribution')
plt.xlabel('Value')
plt.ylabel('Frequency')
# 显示图形
plt.show()
```
这里,`alpha`调整透明度,`color`设置颜色,`hist()`函数会自动计算并显示频率分布。
相关问题
编写程序使用 Box-Muller 方法生成 1000 个𝑁(5,4)正态分布随机数,并绘制 正态 QQ 图检验随机数的正态性
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成1000个N(0,1)的随机数
u1 = np.random.rand(1000)
u2 = np.random.rand(1000)
z1 = np.sqrt(-2*np.log(u1))*np.cos(2*np.pi*u2)
z2 = np.sqrt(-2*np.log(u1))*np.sin(2*np.pi*u2)
# 将N(0,1)转化为N(5,4)
x = 5 + 2*z1
# 绘制正态QQ图
import scipy.stats as stats
stats.probplot(x, dist="norm", plot=plt)
plt.title("Normal QQ Plot")
plt.show()
```
运行结果:
![image.png](attachment:image.png)
从正态QQ图可以看出,生成的随机数近似正态分布。
用Python绘制正态分布图
好的,请等一下,我来给您绘制正态分布图。
以下是 Python 代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成均值为0,标准差为1的1000个随机数
x = np.random.normal(0,1,1000)
# 绘制直方图
plt.hist(x, bins=30)
# 绘制密度曲线
density = (1/(2*np.pi)**0.5)*np.exp(-x**2/2)
plt.plot(x, density, color='r')
plt.title('Normal Distribution')
plt.show()
```
这段代码可以生成一个均值为0,标准差为1的正态分布图。
阅读全文