Una respuesta reciente menciona el uso de los generadores de números aleatorios ( RNG ) 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 sembrar un algoritmo K-Means.
¿Cuál (Fortuna o Mersenne Twister) se considera el mejor para aplicaciones de "siembra algorítmica" (por ejemplo, siembra Monte Carlo y K-Means)? ¿O es una "sacudida", es decir, usar la más conveniente.
Desde donde estoy sentado, "el mejor" debe proporcionar números aleatorios de la más alta calidad, operar rápidamente y (posiblemente) tener poca huella de memoria. De estos, la calidad es probablemente la más importante para la mayoría de nosotros.
RAND_MAX=32768
valores posibles. Actualmente estoy usando MT para el simulador de trazado de rayos de Monte Carlo. Sin embargo, no veo la MT como un cuello de botella de rendimiento en mi generador de perfiles, probablemente porque estoy haciendo una generación "aleatoria" de cosas como direcciones de rayos como un preproceso . Por ejemplo, podría generar una matriz de 100,000 rayos al inicio, almacenarlos en una matriz y seleccionar aleatoriamente la posición de inicio de la matriz en tiempo de ejecución (ejecutando 10,000 rayos más o menos de la colección). Esto tiene una sobrecarga de memoria relativamente alta, a cambio de buenas distribuciones de números aleatorios.