lunes, 8 de marzo de 2010

LCG - Generador de congruencia lineal

El "Linear Congruential Generator", es un conocidísimo (sabía lo que era pero no conocía su nombre hasta hoy..., de hecho creo que le pasa a todo el mundo XD) generador de números pseudo-aleatorios.

Se define mediante la relación de recurrencia ( x_{n+1} = r * x_n (1 - x_n) )

X_{n+1} = ( a * X_n + c ) mod m

Todo ésto, ¿a que viene?, pues viene a la mejora de la entropía del LCG en la versión 5.3.2 de PHP ;).

Y la entropía, ¿qué es? Pues básicamente es la cantidad de información que contiene una señal o cualquiera sea el valor que estemos generando. (Ahora me vienen a la mente las clases de la ingeniería donde hablabamos de Shannon... que bonito :D )Por ejemplo, la entropía será máxima (es decir, que necesitaremos muchos bis para codificar el valor) cuando la probabilidad de generar un número cualquiera sea equiprobable. Por contra, si nuestro generador de números aleatorios solo retornase un valor (menuda mierda de generador), la entropía sería mínima.

Por lo tanto, en la nueva release de PHP han mejorado la seguridad del LCG aumentando su entropía.

Saludos!

Para saber más...
sobre entropía de la información
sobre LCG

No hay comentarios: