Une réponse récente mentionnait l'utilisation de générateurs de nombres aléatoires ( RNG ) Fortuna ou Mersenne Twister pour lancer une simulation Monte Carlo . Je n'avais jamais entendu parler de Fortuna auparavant, alors je l'ai recherché - il semble qu'il soit principalement destiné à un usage cryptographique.
J'utilise actuellement un Mersenne Twister dans le code de production pour créer un algorithme K-Means.
Laquelle (Fortuna ou Mersenne Twister) est considérée comme la meilleure pour les applications "d'amorçage algorithmique" (par exemple, l'amorçage de Monte Carlo et K-Means)? Ou est-ce un "lancer" - c'est-à-dire utiliser le plus pratique.
D'où je suis assis, le "meilleur" devrait fournir des nombres aléatoires de la plus haute qualité, fonctionner rapidement et (éventuellement) avoir une faible empreinte mémoire. Parmi eux, la qualité est probablement la plus importante pour la plupart d'entre nous.
RAND_MAX=32768
les valeurs possibles. J'utilise actuellement MT pour Monte Carlo raytracing sim. Cependant, je ne vois pas la MT comme un goulot d'étranglement des performances dans mon profileur, probablement parce que je fais une génération "aléatoire" de choses comme les directions des rayons en tant que pré-processus . Par exemple, je peux générer un tableau de 100 000 rayons au démarrage, les stocker dans un tableau et sélectionner au hasard la position de départ du tableau au moment de l'exécution (en cours d'exécution pour 10 000 rayons environ de la collection). Cela a une surcharge de mémoire relativement élevée, en échange de bonnes distributions de nombres aléatoires.