我的点 x ∈ [0,R] 的密度是指数的: ρ(x)~e^x 我如何从那里采样 N 个点?
谢谢,
使用反向采样:您生成均匀分布的值并将它们映射到分布的 cdf 的输出。
从表面上看你的要求,如果你想要一个 x ∈ [0,R] 呈指数增长的密度函数,累积分布函数结果是(exp(x) - 1) / (exp(R) - 1)
。要通过反演生成此值,请将 CDF 设置为等于 aUniform(0,1)
并求解x
. 反转结果是:
ln(1 + (exp(R) - 1) * U)
其中 U 表示对 Uniform(0,1) PRNG 的调用。
如果您真正想要的是大多数概率人们所知的指数分布的截断形式,我们需要确定与截断点相对应的随机数的上限R
。在这种情况下,反转是:
-ln(1 - [1 - exp(-lambda * R)] * U) / lambda
和以前一样,U 代表对 Uniform(0,1) PRNG 的调用。这将生成速率为 的指数lambda
,最大截断为R
。