INTRODUCCION
La gran disponibilidad de generadores de números aleatorios en muchos entornos y en prácticamente casi todos los compiladores puede llevarnos a pensar que para un usuario de la simulación no sería necesario estudiar estas cuestiones.
Una lección del pasado reciente nos obliga a sacar conclusiones y actuar con mucho cuidado con dichos generadores (RANDU - IBM).
El uso progresivo de modelos de simulación cada vez más detallados exige una mayor calidad de los generadores de números aleatorios.
Ripley indica que la generación de números aleatorios parece uno de los temas peor comprendidos de la ciencia de computadoras.
Knuth, por su parte indica que “Los números aleatorios no deben ser obtenidos con un método elegido aleatoriamente”
NUMEROS ALEATORIOS. ALGUNAS CARACTERISTICAS
Cuando se generan números seudoaleatorios se pueden producir ciertos errores o problemas, como por ejemplo:
1.- Los números generados pueden no estar distribuidos uniformemente.
2.- Los números generados pueden corresponder a una distribución discreta en lugar de a una continua.
3.- La media de los números generados puede ser demasiado alta o demasiado baja.
4.-La varianza de los números generados puede ser demasiado alta o demasiado baja.
5.- Puede existir una clara dependencia entre ellos.
Por ejemplo:
- Auto correlación entre números.
- Números correlativamente más bajos o más altos que los adyacentes.
- Varios números por encima de la media seguidos de otros por debajo de la misma.
DEFINICIONES
DEF 1: Kolmogorov (1987) [Complejidad Algorítmica]
Una sucesión de números es aleatoria si no puede producirse eficientemente de una manera más corta que la propia serie.
DEF 2: L’Ecuyer (1990) [Impredicibilidad]
Una sucesión de números es aleatoria si nadie que utilice recursos computacionales razonables puede distinguir entre la serie y una sucesión de números verdaderamente aleatoria de una forma mejor que tirando una moneda legal para decidir cuál es cuál.
Obs: Esta definición conduce a los denominados generadores PT-perfectos usados en Criptografía.
DEF 3:
Un Número aleatorio es una realización de una variable aleatoria que tiene asociada una ley de probabilidades F. Obs: Una particular ley de Probabilidad base para la generación de números seudoaleatorios u1, u2,…, un : es la uniforme (0 ; 1) ui ~ U(0,1).
DEF 4:
Una sucesión de números aleatorios generados {u1, u2,…, un} es una sucesión de números U(0;1), si tiene las mismas propiedades estadísticas relevantes que dicha sucesión de números aleatorios reales.
DEF 5:
Una sucesión de números aleatorios {ui} es aleatorio si h-tuplas de números sucesivos no superpuestos se distribuyen aproximadamente como una [0,1]h, con h=1,2,..,n, para n suficientemente grande.
Obs: h=2 tenemos (ui,ui+1) , i=1,2,..n , se distribuye como una ley uniforme en [0,1]2. Existe una gran número de métodos para generar {ui} ≈ U(0,1) : -Uniformente distribuidos
- Independientes
- E[U]= ½ ; V[U]= 1/12
- Período largo
CONSIDERACIONES PARA LA ELECCION DE GENERADORES
Aunque existe un gran número de métodos posibles para la generación de números aleatorios en una computadora, hay también unas ciertas consideraciones importantes para la elección de un método u otro.
– La rutina debe ser rápida.
– La rutina debe ser transportable entre diferentes ordenadores e, idealmente, a diferentes lenguajes de programación.
– La rutina debe tener un ciclo suficientemente largo. Un ciclo representa la longitud de una secuencia antes que comiencen a repetirse los números en el orden anterior. La ocurrencia de repeticiones en los números obtenidos puede propiciar la no aceptación del generador.
– Las secuencias de números aleatorios deben ser replicables. Partiendo del mismo número se debe poder obtener la misma secuencia
– Los números obtenidos deben aproximarse a las propiedades estadísticas ideales de uniformidad e independencia.
METODOS DE GENERACION
Existen varios métodos para la generación de números aleatorios como:
- Método de los cuadrados medios
- Métodos de Congruencias
- Métodos de Tausworthe
Todo proceso de generación consta de tres fases:
[Semilla - Algoritmo - Validación]
P1 : Obtener semilla (valores iniciales)
P2 : Aplicación de algún algoritmo de generación recursivo
P3 : Validación del conjunto de números generados (Pruebas de Aleatoriedad)