El Método Lineal de Congruencias de Lehmer
El Método Lineal de Congruencias de Lehmer
El Método Lineal de Congruencias de Lehmer
Este mtodo se basa en seleccionar 4 NmerosSemilla iniciales (m, a, c, x), los cuales generan una serie de nmeros pseudoaleatorios al operar bajo la siguiente frmula matemtica: X = (ax+c) mod m.
Por ejemplo, se seleccionan los nmeros 10, 8, 19, 7, que corresponde a los 4 nmeros iniciales (m, a, c, x), y el ltimo nmero 7 destacado en color rojo es el que se usar para poder generar el primer nmero de la serie pseudoaleatoria, y de acuerdo a la anterior frmula ese 7 debe ser multiplicado por el 8 (que corresponde a la expresin: ax), y al resultado de esa operacin (56) se le debe adicionar el nmero 19 (que corresponde a la expresin: ax+c), lo que arroja como resultado el valor 75, el cual ahora debe ser dividido por 10 para tomar como resultado no el cociente sino el resto, mdulo o residuo entero de la divisin (que corresponde a la expresin: mod m) que equivale a 5.
El nmero antes obtenido es el primer resultado de la serie pseudoaleatoria y ahora puede reemplazar al nmero 7 inicial (10, 8, 19, 5), y al aplicar de nuevo la frmula matemtica ya mencionada (85 = 40+19 = 59 mod 10 = 9) se obtiene que el nuevo residuo entero es 9, y este nuevo nmero ingresa a la serie pseudoaleatoria. El 9 ahora reemplaza al 5 dentro de los nmeros iniciales (10, 8, 19, 9), y al aplicar de nuevo la frmula (89 = 72+19 = 91 mod 10 = 1) se obtiene como nuevo residuo el nmero 1 que ingresa a la serie pseudoaleatoria. El nmero 1 ahora reemplaza al 9 dentro de los nmeros iniciales (10, 8, 19,1), y al aplicar de nuevo la frmula (81 = 8+19 = 27 mod 10 = 7) se obtiene como residuo el nmero 7 que ingresa a la serie. Si sucesivamente se aplica la misma frmula, se obtiene una serie pseudoaleatoria formada por los , etc. siguientes nmeros:
591759175917591
Es fcil darse cuenta que en este sencillo ejemplo el Loop o periodo repetitivo es muy corto y se produce muy pronto (se comienza a repetir indefinidamente la serie 5917), pero actualmente, aprovechando la
gran potencia de cmputo de los PCs, se ha propuesto usar el Mtodo Lineal de Congruencias seleccionando 4 nmeros iniciales que estn formados cada uno hasta por ms de 50 dgitos, pues entre ms grandes sean estos 4 nmeros iniciales, y sobretodo, entre ms grande sea m, se logra que ms largo sea el periodo, ya que se debe tener en cuenta que los posibles residuos enteros resultantes de la divisin y de la funcin mod que ingresarn a la serie pseudoaleatoria siempre sern nmeros enteros ubicados entre 0 y el valor m1, motivo por el cual es conveniente que dentro del algoritmo el valor de m siempre sea suficientemente grande.
El Mtodo Lineal de Congruencias en las ltimas dcadas ha sido muy usado en el funcionamiento de los randomizer o RNG, porque es fcil para el programador seleccionar unos NmerosSemilla adecuados a partir de los cuales puede generar resultados pseudoaleatorios ubicados dentro de un determinado rango, ya sea de 0 a 10, de 0 a 36, de 0 a 216, etc. Por ejemplo, usando este algoritmo se puede de forma deliberada seleccionar unos nmerossemilla orientados a generar resultados
aleatorios que siempre estarn ubicados entre los valores 0 y 6. As , se pueden seleccionar estos nmeros-semilla: 7, 3, 5, 12; que corresponden al orden de la frmula: (m, a, c, x). Y luego, al aplicar esa frmula del Mtodo Lineal de Congruencias (X = (ax+c) mod m), se obtiene la serie de resultados pseudoaleatorios representada en la siguiente tabla:
MTODO LINEAL DE CONGRUENCIAS: Nmero Multiplica Resulta Dividi Residu s- do por 3 y do do por o Semilla sumado Parcial: 7: entero de la a 5: (m) de la Llave: (ax + c) divisi (x) n: (mod m) 12 12 3 + 5 = 41 5,857 6 6 6 3 + 5 = 23 3,286 2 2 2 3 + 5 = 11 1,571 4 4 4 3 + 5 = 17 2,429 3
3 0 5 6 2 4 3 0
= 14 =5 = 20 = 23 = 11 = 17 = 14 =5
0 5 6 2 4 3 0 5
Como se puede observar, con este mtodo se genera automticamente la siguiente serie pseudoaleatoria: 624305624 , etc. En esta
serie cada nmero final resultante al aplicar el algoritmo es usado como un nuevo nmerosemilla para generar el subsiguiente nmero pseudoaleatorio de la serie. La clave para que el algoritmo slo genere nmeros entre 0 y 6 se encuentra al dividir el resultado parcial por el nmero 7, porque en este caso el residuo entero (que se obtiene mediante la funcin mod de la calculadora) siempre ser un nmero ubicado entre 0 y 71 (es decir, entre 0 y 6). Por supuesto, debido a la
sencillez de este ejemplo, la secuencia pseudoaleatoria fcilmente se vuelve repetitiva, mostrando un Loop muy corto fcilmente predecible. MTODOS DE GENERACIN DE NMEROS PSEUDOALEATORIOS U( 0,1 ) Existen un gran nmero de mtodos para generar los nmeros aleatorios uniformes entre 0 y 1. Algunas formas de obtener estos nmeros son: - Utilizando tablas de nmeros aleatorios. - Utilizando calculadoras ( algunas incluyen una funcin para generarlos ). - Los lenguajes de programacin y las hojas electrnicas incluyen una funcin para generarlos. - Utilizando Generadores Congruenciales.