首页 > 解决方案 > Python 中 random.random 的概率密度函数图

问题描述

我是 python 的新手,我想生成相同的 PDF 绘图,如下所示:

在此处输入图像描述

这是我当前的实现版本,它不会产生相同的图:

import random
import matplotlib.pyplot as plt

plt.figure('PDF for random.random()')
plt.title('PDF for random.random()')
plt.plot(random.random())

plt.figure('PDF for random.random() + random.random()')
plt.title('PDF for random.random() + random.random()')
plt.plot(random.random() + random.random())

plt.figure('PDF for random.random() + random.random() + random.random()')
plt.title('PDF for random.random() + random.random() + random.random()')
plt.plot(random.random() + random.random() + random.random())

plt.show()

我哪里做错了?

标签: pythonmatplotlibrandom

解决方案


调用random.random()一次只返回一个数字,您需要多次调用它才能获得足够好的基础分布样本。

您可以通过编写n调用来创建一个列表。random.random[random.random() for _ in range(n)]

试试这个代码:

import random
import matplotlib.pyplot as plt

sample_size = 10000

fig, (ax1, ax2, ax3) = plt.subplots(nrows=3)

ax1.hist([random.random() for _ in range(sample_size)])
ax1.set_title('PDF for random.random()')

ax2.hist([random.random() + random.random() for _ in range(sample_size)])
ax2.set_title('PDF for random.random() + random.random()')

ax3.hist([random.random() + random.random() + random.random() for _ in range(sample_size)])
ax3.set_title('PDF for random.random() + random.random() + random.random()')

plt.show()

输出图像:

在此处输入图像描述


推荐阅读