Estoy programando un LFSR (Linear Feedback Shift Register) en software para 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 carreras de '1 y' 0 o 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 pulsaciones [15, 14], trazar un par de números secuenciales como puntos en un plano da lo siguiente. Un PRNG ideal debería difundir estos puntos por todo el lugar.
Sé que los LFSR se usan como contador de hardware rápido, pero también he visto que se usa como PRNG para crear ruido blanco. ¿Cómo se usa en aplicaciones del mundo real con una calidad tan pobre?