用 NumPy 产生100000个服从均值为5、标准差为1的高斯随机数。将一个画布分为左右两个子图,在左边子图上画出这组随机数的频率直方图,在右边子图上画出该组随机数的概率密度分布;
时间: 2024-02-27 22:54:02 浏览: 110
python numpy 常用随机数的产生方法的实现
好的,我来回答你的问题。
首先,我们需要导入NumPy和Matplotlib库,并生成100000个服从均值为5、标准差为1的高斯随机数。代码如下:
```python
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(1)
mu, sigma = 5, 1
x = np.random.normal(mu, sigma, 100000)
```
接下来,我们在左边子图上画出这组随机数的频率直方图。我们可以使用Matplotlib库中的`hist`函数来绘制直方图。代码如下:
```python
plt.subplot(1, 2, 1)
plt.hist(x, bins=50, density=False, alpha=0.5, color='b')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Histogram of Gaussian Distribution')
```
这里的`bins`参数指定了直方图的柱子数量,`density`参数指定是否将直方图归一化为概率密度分布,`alpha`参数指定柱子的透明度,`color`参数指定柱子的颜色。
最后,在右边子图上画出该组随机数的概率密度分布。我们可以使用Matplotlib库中的`plot`函数来绘制概率密度分布曲线。代码如下:
```python
plt.subplot(1, 2, 2)
count, bins, ignored = plt.hist(x, bins=50, density=True, alpha=0.5, color='b')
plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *
np.exp( - (bins - mu)**2 / (2 * sigma**2) ),
linewidth=2, color='r')
plt.xlabel('Value')
plt.ylabel('Probability density')
plt.title('Probability Density of Gaussian Distribution')
```
这里的`count`、`bins`和`ignored`参数是`hist`函数的返回值,用于绘制概率密度分布曲线。我们使用高斯分布的概率密度函数来绘制曲线,其中`mu`和`sigma`分别是高斯分布的均值和标准差。
最后,我们使用`show`函数显示画布。完整代码如下:
```python
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(1)
mu, sigma = 5, 1
x = np.random.normal(mu, sigma, 100000)
plt.subplot(1, 2, 1)
plt.hist(x, bins=50, density=False, alpha=0.5, color='b')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Histogram of Gaussian Distribution')
plt.subplot(1, 2, 2)
count, bins, ignored = plt.hist(x, bins=50, density=True, alpha=0.5, color='b')
plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *
np.exp( - (bins - mu)**2 / (2 * sigma**2) ),
linewidth=2, color='r')
plt.xlabel('Value')
plt.ylabel('Probability density')
plt.title('Probability Density of Gaussian Distribution')
plt.show()
```
运行上述代码,即可得到左右两个子图,分别为该组随机数的频率直方图和概率密度分布。
阅读全文