我想在 Java 中有界指数分布上生成随机数,但公式x = log(1-u)/(−λ)
(这里 u 是 之间的均匀随机数[0,1)
)不会生成有界指数随机数。
请让我知道如何在 JAVA 中生成基于有界指数分布的随机数。
我想在 Java 中有界指数分布上生成随机数,但公式x = log(1-u)/(−λ)
(这里 u 是 之间的均匀随机数[0,1)
)不会生成有界指数随机数。
请让我知道如何在 JAVA 中生成基于有界指数分布的随机数。
Wrt 你的问题,你可以尝试重新调整你的 U(0,1) rng,比如范围 [A...B],L
是 lambda
a = 1.0 - exp(-A*L); // so that log(1-a)/(-L) = A;
b = 1.0 - exp(-B*L); // so that log(1-b)/(-L) = B;
// now sampling
u = a + (b - a) * Rng();
v = log(1-u)/(-L);
在你的情况下 A = 1, B = 100
顺便说一句,u
并且1-u
具有相同的分布,因此您可以使用log(u)
而不是 ,为log(1-u)
您节省了减法