Una recente risposta ha menzionato l'uso dei generatori di numeri casuali ( RNG ) di Fortuna o Mersenne Twister per seminare una simulazione Monte Carlo . Non avevo mai sentito parlare di Fortuna prima, quindi l'ho cercato - sembra che sia principalmente destinato all'uso crittografico.
Attualmente uso un Mersenne Twister nel codice di produzione per seminare un algoritmo K-Means.
Quale (Fortuna o Mersenne Twister) è considerato il migliore per le applicazioni di "seeding algoritmico" (ad es. Seeding Monte Carlo e K-Means)? O è un "lancio", ovvero usa il più conveniente.
Da dove sono seduto, "best" dovrebbe fornire numeri casuali della massima qualità, operare rapidamente e (possibilmente) avere un ingombro di memoria ridotto. Di questi, la qualità è probabilmente la più importante per la maggior parte di noi.
RAND_MAX=32768
valori possibili. Attualmente sto usando MT per il simulatore di raytracing di Monte Carlo. Tuttavia, non vedo MT come un collo di bottiglia nelle prestazioni nel mio profiler, probabilmente perché sto facendo una generazione "casuale" di cose come le direzioni dei raggi come un processo preliminare . Ad esempio, potrei generare una matrice di 100.000 raggi all'avvio, memorizzarli in una matrice e selezionare in modo casuale la posizione iniziale della matrice in fase di esecuzione (in esecuzione per circa 10.000 raggi della raccolta). Questo ha un sovraccarico di memoria relativamente elevato, in cambio di buone distribuzioni di numeri casuali.