algorithms – ¿Es preferible Fortuna o Mersenne Twister como un RNG algorítmico?

Pregunta:

Una respuesta reciente mencionó el uso de Generadores de números aleatorios ( RNG ) de Fortuna o Mersenne Twister para sembrar una simulación de Monte Carlo . No había oído hablar de Fortuna antes, así que lo busqué; parece que está destinado principalmente para uso criptográfico.

Actualmente uso un Mersenne Twister en el código de producción para generar un algoritmo K-Means.

¿Cuál (Fortuna o Mersenne Twister) se considera mejor para aplicaciones de "siembra algorítmica" (por ejemplo, siembra de Monte Carlo y K-Means)? O es un "lanzamiento", es decir, utilice el más conveniente.

Desde donde estoy sentado, "mejor" debe proporcionar números aleatorios de la más alta calidad, operar rápidamente y (posiblemente) tener una huella de memoria baja. De estos, la calidad es probablemente el más importante para la mayoría de nosotros.

Respuesta:

Bueno, todo es una compensación de un tipo u otro. Para los generadores de números aleatorios, los agrupo en 3 categorías básicas:

  1. Lo suficientemente bueno para la tarea.
  2. Lo suficientemente bueno para apostar su empresa.
  3. Lo suficientemente bueno para apostar tu país.

Los PRNG congruentes lineales (el método generalmente implementado en la mayoría de las bibliotecas) están sólidamente en la categoría 1. Tanto Fortuna como Mersenne Twister están sólidamente en la categoría 2.

Para obtener un artículo interesante sobre cómo estropear un algoritmo de barajado puede costarle a su empresa / casino, le recomiendo este de 1999 . Debido a la descomposición del enlace, las imágenes desaparecen, pero la figura 4, en la que se grafica el siguiente número del PRNG contra el número anterior generado, es un conjunto de líneas paralelas.

Como señala JM, Fortuna es lento. Como ha señalado, Mersenne Twister es razonablemente rápido.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım