Java で有界指数分布で乱数を生成したいのですが、式x = log(1-u)/(−λ)
(ここで u は の間の一様乱数です[0,1)
) は有界指数乱数を生成しません。
JAVA で境界付き指数分布ベースの乱数を生成する方法を教えてください。
Java で有界指数分布で乱数を生成したいのですが、式x = log(1-u)/(−λ)
(ここで u は の間の一様乱数です[0,1)
) は有界指数乱数を生成しません。
JAVA で境界付き指数分布ベースの乱数を生成する方法を教えてください。
あなたの質問を書いて、U(0,1) rng を再スケーリングしようとすることができます。たとえば、範囲 [A...B]L
はラムダです。
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)
、減算を節約できます