用Python产生随机数并绘制出这些数的直方图
时间: 2023-07-19 18:18:48 浏览: 36
好的,可以使用Python中的random模块产生随机数,使用matplotlib库绘制直方图。
以下是示例代码:
```python
import random
import matplotlib.pyplot as plt
# 产生1000个范围在0~100之间的随机数
random_numbers = [random.randint(0, 100) for _ in range(1000)]
# 绘制直方图
plt.hist(random_numbers, bins=20)
plt.xlabel('随机数范围')
plt.ylabel('频数')
plt.title('随机数直方图')
plt.show()
```
运行代码后,将会弹出一个窗口显示随机数的直方图。
相关问题
生成100个随机数并绘制8个直方图
好的,我可以帮你生成100个随机数并绘制8个直方图。以下是Python的代码实现:
```python
import random
import matplotlib.pyplot as plt
# 生成100个随机数
random_nums = [random.uniform(0, 10) for _ in range(100)]
# 绘制8个直方图
fig, axs = plt.subplots(2, 4, figsize=(12, 6))
axs = axs.flatten()
for i in range(8):
axs[i].hist(random_nums, bins=10, alpha=0.5)
axs[i].set_title("Histogram {}".format(i+1))
plt.tight_layout()
plt.show()
```
这段代码首先使用`random.uniform()`函数生成了100个0到10之间的随机数。然后使用`matplotlib`库的`subplots()`函数创建了一个2行4列的图表,并将所有子图对象存储在一个`axs`数组中。接下来,使用`for`循环在每个子图上绘制直方图,并使用`set_title()`函数为每个子图设置标题。最后,使用`tight_layout()`函数调整子图的布局,并使用`show()`函数显示图表。
用 numpy 方法产生标准正态分布的随机数 100 个,并将其转换成 10 行 10 列的数据矩阵,绘制出 bins=10 的直方图,多次运行程序观察图形的效果; 然后利用种子方法产生同样的随机数,再观察数据以及直方图的效果。 同样地,用 scipy.stats 方法产生以上的随机数,并绘制出对应的直方图, 在 stats 方法中用参数 random_state 观察效果,并将正态分布的累计分布函数曲线绘制出来。
好的,以下是代码实现:
使用 numpy 产生标准正态分布的随机数 100 个,并将其转换成 10 行 10 列的数据矩阵,绘制出 bins=10 的直方图,多次运行程序观察图形的效果:
```python
import numpy as np
import matplotlib.pyplot as plt
# 产生标准正态分布的随机数 100 个
data = np.random.randn(100)
# 将其转换成 10 行 10 列的数据矩阵
data_matrix = data.reshape(10, 10)
# 绘制出 bins=10 的直方图
plt.hist(data, bins=10)
plt.show()
```
使用种子方法产生同样的随机数,再观察数据以及直方图的效果:
```python
import numpy as np
import matplotlib.pyplot as plt
# 使用种子方法产生同样的随机数
np.random.seed(0)
data = np.random.randn(100)
# 将其转换成 10 行 10 列的数据矩阵
data_matrix = data.reshape(10, 10)
# 绘制出 bins=10 的直方图
plt.hist(data, bins=10)
plt.show()
```
使用 scipy.stats 方法产生以上的随机数,并绘制出对应的直方图, 在 stats 方法中用参数 random_state 观察效果,并将正态分布的累计分布函数曲线绘制出来:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
# 产生标准正态分布的随机数 100 个
data = norm.rvs(size=100, random_state=0)
# 绘制出 bins=10 的直方图
plt.hist(data, bins=10)
plt.show()
# 绘制正态分布的累计分布函数曲线
x = np.linspace(-3, 3, 100)
plt.plot(x, norm.cdf(x))
plt.show()
```
以上就是实现代码,希望对你有帮助。