Saltar al contenido

Generador de números pseudoaleatorios – Distribución exponencial

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, uen [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^-1lanzar 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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *