La variable aleatoria

prev.gif (997 bytes)chapter.gif (1105 bytes)home.gif (1232 bytes)next.gif (1211 bytes)

Métodos de Montecarlo

La variable aleatoria

Variable aleatoria discreta

Variable aleatoria continua

Generador de números aleatorios


La variable aleatoria

Se denomina variable aleatoria, a una variable X que puede tomar un conjunto de valores {x0, x1, x2, ... xn-1}, con probabilidades {p0, p1, p2, ... pn-1}. Por ejemplo, en la experiencia de lanzar monedas, los posibles resultados son {cara, cruz}, y sus probabilidades son {1/2, 1/2}. En la experiencia de lanzar dados, los resultados posibles son {1, 2, 3, 4, 5, 6} y sus probabilidades respectivas son {1/6, 1/6, 1/6, 1/6, 1/6, 1/6}.

Realicemos ahora la experiencia de hacer girar una ruleta y apuntar el número del sector que coincide con la flecha. En la ruleta de la izquierda de la figura los resultados posibles son {0, 1, 2, 3, 4, 5, 6, 7}, y la probabilidad de cada resultado es 1/8. En la ruleta de la derecha de la figura los posibles resultados son {0, 1, 2, 3}, y las probabilidades respectivas {1/4, 1/2, 1/8, 1/8}, proporcionales al ángulo del sector.

FIG17_01.gif (3531 bytes)

En los tres primeros ejemplos, la variable aleatoria X se dice que está uniformemente distribuida, ya que todos los resultados tienen la misma probabilidad. Sin embargo, en el último ejemplo, la variable aleatoria X, no está uniformemente distribuida.

El problema crucial de la aplicación de los métodos de Montecarlo es hallar los valores de una variable aleatoria (discreta o continua) con una distribución de probabilidad dada por la función p(x) a partir de los valores de una variable aleatoria uniformemente distribuida en el intervalo [0, 1), proporcionada por el ordenador o por una rutina incorporada al programa.

Para simular un proceso físico, o hallar la solución de un problema matemático es necesario usar gran cantidad de números aleatorios. El método mecánico de la ruleta sería muy lento, además cualquier aparato físico real genera variables aleatorias cuyas distribuciones difieren, al menos ligeramente de la distribución uniforme ideal. También, se puede hacer uso de tablas de cifras aleatorias uniformemente distribuidas, comprobadas minuciosamente en base a pruebas estadísticas especiales. Se emplean solamente cuando los cálculos correspondientes a la aplicación del método de Montecarlo se realiza a mano, lo que en estos tiempos resulta inimaginable. En la práctica, resulta más conveniente emplear los denominados números pseudoaleatorios, se trata de números que se obtienen a partir de un número denominado semilla, y la aplicación reiterada de una fórmula, obteniéndose una secuencia {x0, x1, x2, ... xn} de números que imitan los valores de una variable uniformemente distribuida en el intervalo [0, 1).

 

Variable aleatoria discreta

Para simular la ruleta situada a la derecha de la figura, se procede del siguiente modo: se hallan las probabilidades de cada resultado, proporcionales al ángulo de cada sector y se apuntan en la segunda columna, la suma total debe de dar la unidad. En la tercera columna, se escriben las probabilidades acumuladas.

Resultado Probabilidad P. acumulada
0 0.25 0.25
1 0.5 0.75
2 0.125 0.875
3 0.125 1

Se sortea un número aleatorio g uniformemente distribuido en el intervalo [0, 1), el resultado del sorteo se muestra en la figura. En el eje X se sitúan los distintos resultados que hemos nombrado x0, x1, x2, x3 . En el eje vertical las probabilidades en forma de segmentos verticales de longitud igual a la probabilidad pi de cada uno de los resultados, dichos segmentos se ponen unos a continuación de los otros, encima su respectivo resultado xi. Se obtiene así una función escalonada. Cuando se sortea una variable aleatoria g, se traza una recta horizontal cuya ordenada sea g. Se busca el resultado cuya abscisa sea la intersección de dicha recta horizontal y del segmento vertical, tal como se señala con flechas en la figura. Si el número aleatorio g está comprendido entre 0.25 y 0.75 se obtiene el resultado denominado x1.

FIG17_02.gif (2353 bytes)

La tabla describe el sorteo de una variable discreta, siendo g una variable aleatoria uniformenente distribuída en el intervalo [0,1).

Condición Resultado
0<=g<0.25 0
0.25<=g<0.75 1
0.75<=g<0.875 2
0.875<=g<1 3

Una vez visto un caso particular, el problema general puede formularse del siguiente modo:

Si X es una variable aleatoria discreta cuyos posible resultados son {x0, x1, x2 , ... xn-1} y sean {p0, p1, p2, ... pn} sus respectivas probabilidades. Al sortear un número aleatorio g, uniformemente distribuido en el intervalo [0, 1), se obtiene el resultado xi, si se verifica la siguiente condición

           (1)

 

Variable aleatoria continua

Comprendido el concepto de transformación de una variable discreta, y el procedimiento para obtener un resultado cuando se efectúa el sorteo de una variable aleatoria uniformemente distribuida, no reviste dificultad el estudio de la variable continua. Si X es una variable aleatoria continua, y p(x) es la probabilidad de cada resultado x, construimos la función que se representa en la figura.

      (2)

El resultado del sorteo de una variable g uniformemente distribuida en el intervalo [0 ,1) se obtiene a partir de la ecuación.

      (3)

Gráficamente, se obtiene trazando una recta horizontal de ordenada g. La abscisa x del punto de corte con la función es el resultado obtenido. En la figura se señala mediante flechas.

FIG17_03.gif (1904 bytes)

Un ejemplo sencillo es la transformación de una variable aleatoria que está uniformemente distribuida en el intervalo [a, b) si

Integrando (2) obtenemos la función

que es una línea recta, que vale cero cuando x=a, y uno cuando x=b, tal como puede verse en la figura inferior. Utilizando la fórmula (3) de la transformación de la variable aleatoria continua y despejando x, se obtiene

FIG17_04.gif (1997 bytes)

 

Generador de números aleatorios

Existen varias fórmulas para obtener una secuencia de números aleatorios, una de las más sencillas es la denominada fórmula de congruencia: se trata de una fórmula iterativa, en la que el resultado de una iteración se utiliza en la siguiente.

	x=(a*x+c)%m;

donde a, c, m, son constantes cuyos valores elige el creador de la rutina, así por ejemplo tenemos

a=24298   c=99491 m=199017

a=899  c=0        m=32768

Basta introducir el valor inicial de x, para obtener una secuencia de números pseudoaleatorios. Dejaremos al lector interesado la codificación de esta rutina, que no precisaremos en las siguientes secciones ya que podemos usar la clase Random que dispone el lenguaje Java.