Generador congruencial lineal(mixto) para generar numeros pseudo - aleatorios



Los generadores congruenciales pseudoaleatorios generan una seria de números pseudo aleatorios de tal forma que se pueden generar aparir del ultimo numero derivado. Xn+1 es generado a parti de Xn.

Para tener en cuenta: mod es lo mimo que el residuo. Cuando se divide un número 'a' entre 'b', también se puede expresar como 'a mod b', que es el resto.

Relación de recurrencia.






Ventajas 

  • Utiliza poca memoria y es rápido
  • Facil de de obtener la misma secuencia, solo es necesario tener la misma semilla.
 


Como seleccionar c

Este parámetro puede tomar cualquier valor pero para asegurar buenos resultados se deberá seleccionar según la regla: c mod 8 = 5.

Al usar esta regla c deberá tomar un valor entero impar y relativamente primo a m.

Como seleccionar a

Debe cumplir las siguiente reglas:
  • Deber ser un numero impar que no debe ser divisible entre 3 o 5
Para asegurar que el generador tenga un periodo completo(que se generan el numero de números sin repetirte indicados en el m) el valor que se tome debera escogerse según el criterio:
  • (a-1) mod 4 = 0 si 4 es un factor de m
  • (a-1) mod c = 0 si c es un factor primo de m 

Otra opción es tomar a a  igual a 2k+1 siendo k un constante

Como seleccionar m


Me se puede seleccionar usando la formula m = 2^g siendo g un valor cualquiera mayor a cero.

Se dice que un generador congruencial tiene un periodo maximo cuando si  y solo si
  • c y m son primos relativos o MCD(c,m) =1
  • Para cualquier factor primo p de m =>  (a-1) mod p = 0
  • Si 4 divide a m 4 divide a a-1

Si se quiere que el numero aleatorio este entre 0 y 1 lo que se debe hacer es: x/(m-1) cada vez que sacamos la nueva semilla.

Ejemplos

0 Comentarios