Investigamos en todo el mundo on line para tenerte la respuesta para tu duda, en caso de preguntas déjanos tu inquietud y responderemos porque estamos para ayudarte.
Dado que tiene acceso a un generador de números aleatorios uniformes, generar un número aleatorio distribuido con otra distribución cuya CDF conoce es fácil usando el método de inversión.
Entonces, genere un número aleatorio uniforme, u
en [0,1)
, then calculate x
by:
x = log(1-u)/(-λ)
,
where λ
is the rate parameter of the exponential distribution. Now, x
is a random number with an exponential distribution. Note that log
above is ln
, the natural logarithm.
The Fundamental Theorem of Sampling holds that if you can normalize, integrate and invert the desired distribution you are home free.
If you have a desired distribution F(x)
normalized on [a,b]
. tu calculas
C(y) = int_a^y F(x) dx
invertir eso para obtener C^-1
lanzar z
uniformemente encendido [0,1) and find
x_i = C^-1(z_i)
which will have the desired distribution.
In your case: F(x) = ke^-kx
and I will assume that you want [0,infinity]
. Obtenemos :
C(y) = 1 - e^-ky
que es invertible para dar
x = -1/k ln(1 - z)
para z lanzada uniformemente sobre [0,1)
.
But, frankly, using a well debugged library is smarter unless you’re doing this for your own edification.
This is the formula I found on Wikipedia :
T = -Ln(u) / λ
We create a random number with a uniform distribution (u) in [0,1]y obtenemos x:
Aleatorio R = nuevo Aleatorio();
doble u = R. SiguienteDoble();
doble x = -Math.Log(u)/(λ);
Acuérdate de que te brindamos la opción de agregar una reseña si hallaste tu dificultad en el momento cabal.