指数分布是一种连续概率分布,用于描述泊松过程中两个事件之间的时间间隔,其中事件的发生是独立的,且以恒定的平均速率进行。NumPy 为我们提供了一种简单的方法来生成这样的随机数值:numpy.random.exponential()。
示例: 这个示例向我们展示了如何使用默认参数生成一个指数分布的随机值。
Python
CODEBLOCK_6c4490d7
输出结果
0.5339358426948082
解释:
np.random.exponential()会生成一个服从指数分布的数值。- 由于我们没有传递任何参数,它默认使用
scale = 1。
语法
> numpy.random.exponential(scale=1.0, size=None)
参数说明:
- scale: 事件发生速率的倒数(即 β = 1/λ)。
- size: 输出数组的形状。
更多示例
示例 1: 在这个示例中,我们将使用自定义的 scale 参数来生成一个指数分布随机值。
Python
CODEBLOCK_4a22ffaf
输出结果
0.8177243559186411
解释:
scale=2意味着生成的数值分布会更加分散。- 变量
x中保存了一个单一的指数分布随机数。 - 较大的 scale 值会使分布图看起来更“长”且更“宽”。
示例 2: 让我们来看看如何从指数分布中生成五个随机数。
Python
CODEBLOCK_0581ac39
输出结果
[2.14106221 1.93254045 0.03957526 0.58763751 1.12814399]
解释
scale=1.5代表一个中等的分散程度。size=5指定返回 5 个数值。- 变量 INLINECODEef43d519 存储了数组,形式类似于 INLINECODE8356a028。
可视化指数分布
通过可视化生成的数值,我们可以更直观地理解其分布规律。下面是一个示例,展示了如何绘制使用 numpy.random.exponential 生成的随机数的直方图。
Python
CODEBLOCK_243a1bf8
输出结果
!ExponentialDistributionPlotExponenetial Distribution Plot
解释:
s = 2设置了分布的分散范围(缩放比例)。n = 800生成了足够多的数据点,以使直方图更加平滑。sns.histplot()函数展示了两部分内容:柱状图 -> 模拟的实际数据 和 曲线 (kde) -> 平滑的理论形状。- 我们可以看到,图形在 0 附近的频率很高,并伴随着一条长长的下降尾迹,这正是指数分布的典型特征。