Docencia Autor

Números aleatorios: Pieza clave en la Simulación

Las variables independientes en el modelo matemático para una simulación son tratadas con números aleatorios (porque representan las variables que no se pueden controlar). Conseguir generar números aleatorios no es tan fácil como se cree.

Realmente en los PC no se pueden generar números completamente al azar debido a que no tienen ningún componente electrónico que presente comportamiento totalmente aleatorio y envíe señales de este comportamiento (todo es determinístico). ¿Cómo entonces un PC genera números al azar si los lenguajes de programación como Java tienen una clase Random?

Los números “aletorios” en un PC son realmente números pseudos-aleatorios generados por algoritmos, uno muy conocido es el:

Método Congruencial

X1 = (A*X0+B)%N
X
2 = (A*X1+B)%N
X
3 = (A*X2+B)%N
.
.
.

Donde
A, B y N son números enteros con valores iniciales (los números se generan entre 0 y N-1). Y se le da un valor a X0 al inicio.

Observe la siguiente tabla en la cual se prueba este método:

X A B N Número Pseudo-Aleatorio Generado r
Valor Aleatorio usado para calcular el valor de las variables aleatorias
2 12 90 100 14 0,14
14       58 0,58
58       86 0,86
86       22 0,22
22       54 0,54
54       38 0,38
38       46 0,46
46       42 0,42
42       94 0,94
94       18 0,18
18       6 0,06
6       62 0,62
62       34 0,34
34       98 0,98
98       66 0,66
66       82 0,82
82       74 0,74
74       78 0,78
78       26 0,26
26       2 0,02

Descargue el archivo en Excel


Requisitos de un buen generador de números pseudo-aleatorios

Los generadores de números aleatorios deben cumplir las siguientes condiciones:

1. Deben arrojar números uniformemente distribuidos.

2. Estadísticamente independientes.

3. Su período o ciclo debe ser largo: Si usted toma el ejemplo anterior y empieza a generar los diversos números llegará a un momento en que se obtenga un número que se generó anteriormente y se repita la secuencia. La cantidad de números que no se repiten en una secuencia se conoce como período. Por ejemplo:

12, 23, 31, 17, 71, 14, 42, 21, 12, 23, 31, 17, 71, 14, 42, 21, 12, 23, 31, 17, 71, 14, 42, 21,  el período es ocho(8).

Puede suceder algo como esto: 68, 12, 32, 56, 25, 17, 32, 56, 25, 17, el período es 4

4. Deben ser rápidos y consumir poca memoria.

 

 

Actividad 1: Cambie sutilmente los valores iniciales del generador de números pseudo-aleatorios, observe como reacciona el generador. Lea una explicación de este tipo de comportamiento: http://en.wikipedia.org/wiki/Chaos_theory

 

Actividad 2: Desarrolle un programa en Java que implemente el método congruencial, compárelo con los resultados en Excel.