You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算numpy指数随机生成器的scale参数以获取指定范围数值

指数分布scale参数计算方法

指数分布的理论取值范围为[0, +∞),不存在scale参数能保证100%的样本都落在0到18353区间内,我们可以通过设定可接受的样本覆盖率,直接推导得到对应的scale参数:

计算公式推导

指数分布的累积分布函数为:

F(x) = 1 - e^(-x/β)

其中β就是np.random.exponential的scale参数,F(x)表示随机变量取值≤x的概率。
假设你希望有占比为p的样本落在0到18353区间内,代入公式求解β:

  1. 代入x=18353,得 1 - e^(-18353/β) = p
  2. 整理得 β = -18353 / ln(1-p)

常见取值示例

你可以根据自己能接受的超出比例选择p值:

  • 要求99%的样本不超过18353:p=0.99,计算得β≈18353/4.605≈3985
  • 要求99.9%的样本不超过18353:p=0.999,计算得β≈18353/6.908≈2657
  • 要求99.99%的样本不超过18353:p=0.9999,计算得β≈18353/9.210≈1993

完全限定区间的解决方案

如果需要所有生成的样本绝对不会超过18353,可以使用截断指数分布,借助scipy实现的代码如下:

import numpy as np
from scipy.stats import truncexpon

# 自定义覆盖率,此处示例为99.9%
cover_rate = 0.999
scale = -18353 / np.log(1 - cover_rate)
# 生成400个严格落在0~18353区间内的指数分布随机数
samples = truncexpon.rvs(b=18353/scale, scale=scale, size=400)

另外补充一个现有代码的小问题:你绘制的三个分布对应β为2000、2300、2400,但图例标注的是β=1、2、3,和实际参数不匹配,调试时注意修正即可。

内容的提问来源于stack exchange,提问作者Hanna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 20:06:03