Estoy programando un LFSR (Registro de desplazamiento de retroalimentación lineal) en software con fines de aprendizaje, y he encontrado algunas limitaciones en su uso como generador de números pseudoaleatorios (PRNG).
- Si la semilla tiene pocos bits '1' y se usan pocos toques, se requiere un gran "tiempo de inicio" para producir una salida aparentemente aleatoria, con una distribución casi igual entre las corridas '1' y '0' o '0' cortas. Supongo que con más toques, tal inicio sería mucho más rápido, pero todas las tablas precalculadas que encuentro dan dos o cuatro toques.
- Los números secuenciales están altamente correlacionados, lo cual es de esperar, dado que si el bit de salida es 0, el siguiente número será la mitad del anterior. Para un LFSR de 15 bits con toques [15, 14], trazar un par de números secuenciales como puntos en un plano da lo siguiente. Un PRNG ideal debería extender estos puntos por todo el lugar.
Sé que los LFSR se usan como contador rápido de hardware, pero también he visto que se usa como un PRNG para crear ruido blanco. ¿Cómo se usa en aplicaciones del mundo real con tan mala calidad?