El Mersenne Twister es ampliamente considerado como bueno. Diablos, la fuente de CPython dice que "es uno de los generadores más ampliamente probados que existen". Pero ¿qué significa esto? Cuando se me pide que enumere las propiedades de este generador, la mayoría de lo que puedo ofrecer es malo:
- Es masivo e inflexible (por ejemplo, sin búsqueda o múltiples flujos),
- No pasa las pruebas estadísticas estándar a pesar de su tamaño de estado masivo,
- Tiene serios problemas alrededor de 0, lo que sugiere que se aleatoriza bastante mal,
- No es rapido
y así. En comparación con los RNG simples como XorShift *, también es irremediablemente complicado.
Así que busqué información sobre por qué se pensó que esto era bueno. El artículo original hace muchos comentarios sobre el período "súper astronómico" y la equidistribución de 623 dimensiones, diciendo
Entre muchas medidas conocidas, las pruebas basadas en la uniformidad dimensional más alta, como la prueba espectral (cf, Knuth [1981]) y la prueba de distribución k, descritas a continuación, se consideran más fuertes.
Pero, para esta propiedad, ¡el generador es golpeado por un contador de longitud suficiente! Esto no hace ningún comentario sobre las distribuciones locales , que es lo que realmente le importa en un generador (aunque "local" puede significar varias cosas). E incluso los CSPRNG no se preocupan por períodos tan largos, ya que simplemente no es remotamente importante.
Hay muchas matemáticas en el documento, pero hasta donde puedo decir poco, en realidad se trata de la calidad de la aleatoriedad. Casi cada mención de eso salta rápidamente a estas afirmaciones originales, en gran medida inútiles.
Parece que la gente se subió a este carro a expensas de tecnologías más antiguas y confiables. Por ejemplo, si simplemente sube el número de palabras en un LCG a 3 (mucho menos que el "solo 624" de un Mersenne Twister) y genera la palabra superior en cada pase, pasa BigCrush ( la parte más difícil del conjunto de pruebas TestU01 ), a pesar de que Twister falla ( papel PCG, fig. 2 ). Teniendo en cuenta esto, y la evidencia débil pude encontrar en apoyo del Mersenne Twister, lo que hizo causa atención a lo favorecen sobre las otras opciones?
Esto tampoco es puramente histórico. Me han dicho de pasada que el Mersenne Twister está al menos más probado en la práctica que, por ejemplo, PCG al azar . ¿Pero los casos de uso son tan exigentes que pueden funcionar mejor que nuestras baterías de pruebas? Algunos Google sugieren que probablemente no lo sean.
En resumen, me pregunto cómo el Mersenne Twister obtuvo su reputación positiva generalizada, tanto en su contexto histórico como de otro tipo. Obviamente, por un lado, soy escéptico sobre sus cualidades, pero por otro lado, es difícil imaginar que se haya producido de forma totalmente aleatoria.