Je joue avec PRNGS (comme Mersenne Twister et Je n'ai pas beaucoup d'idée des simulations de Monte Carlo; S'il vous plaît laissez-moi savoir sur un algorithme / une application (éventuellement quelque chose de simple pour laquelle cela pourrait fournir de bonnes inférences) qui m'aiderait à les distinguer en termes de qualité. P>
edit 1: strong> Je n'ai pas remarqué précédemment, mais il y a un thread similaire: Comment tester des nombres aléatoires? p>
edit 2: strong> Je ne suis pas en mesure d'interpréter les résultats du NIST, comme mentionné dans l'un des commentaires. J'ai eu cette idée d'interpréter visuellement le motif (le cas échéant) de aléatoire.org et suivez-le que En raison de sa simplicité. Je serais très heureux que quelqu'un puisse commenter le processus de mes tests: p>
Si je comprends bien que ce n'est pas une solution très précise, mais si cela fournit une estimation raisonnable, je pourrais alors vivre avec cela au moment présent. p> Rand () Code> Fonction de STDLIB) et je voudrais un bon test qui m'aiderait à déterminer la qualité des données aléatoires produites par les PRNG.
J'ai calculé la valeur de PI en utilisant des nombres aléatoires générés par les PRNG, et je trouve
rand () CODE> et Mersenne Twister pour être très proche d'une distinction (dois-je examiner après 10 points décimaux? ). p>
(rond (genrand_real1 () / rand_0_1 ())) code> puis pixel rouge, sinon noir li>
ol>
3 Réponses :
Vous êtes préférable à regarder dans le Volume 2 de la série de Knuth . P>
Pour une lecture plus courte, recherchez le chapitre correspondant des recettes numériques. p>
Si vous n'êtes intéressé que par une sorte de base de base pour une simulation MC --- Les générateurs congruentiels linéaires sont mieux évités, Mersenne Twister est assez bon em> dans la vaste majorité des cas. p>
Pouvez-vous donner un lien à la preuve de la prétention selon laquelle les LGC sont mieux évitées pour les simulations de Monte-Carlo?
@ziggystar: Eh bien, vous pouvez vous lever à Knuth. Ou recettes numériques. Ou Google dans les résultats des suites de test standard, par exemple de la réponse CSGillePie.
Il existe deux suites de test standard pour tester des nombres aléatoires. p>
Il y a une interface R à la bibliothèque de Dieharder, appelée RDieharder . Cette bibliothèque fournit une interface avec les suites Test Nist et Diehard. P>
J'utilise NIST, mais je pense que bien que mon test passe, il y a un problème; Peux-tu aider s'il te plait? - J'ai généré de longues valeurs aléatoires et les converties en binaires et stockées dans un fichier. Disons 100 Randoms y a-t-il dans le fichier, j'écris 100 et suivez les étapes décrites dans la section "Exécution du code de test" du doc (choisi les flux de bits générés à 10 comme dans le document). Mais je vois que mon "finalAnalysisReporport.txt" pour le cas de test par défaut ne contient presque aucune information.
Votre meilleur pari est de poser une autre question.
Cette réponse était bonne, mais est obsolète maintenant. Voir l'autre réponse pour une mise à jour (TL; DR: L'ECUYER'S TESTU01, ou PRACTRAND).
Il existe plusieurs suites de tests statistiques disponibles. J'ai écrit, copié, et a rassemblé autrement 120 prngs et testé chacun avec une variété de suites de tests données 4 heures par PRNG par Suite Test: P>
Divulgation complète: j'ai écrit PRACTRAND, donc l'ensemble des PRNG ou toute autre mesure non qualitative pourrait être biaisé en sa faveur. em> p>
Avantages divers: strong> p>
Divers inconvénients: strong> p>
L'ensemble des PRNG testés: strong>
L'ensemble PRNG comprend 1 grand GFSR, 1 grand LFSR, 4 PRNG de type XORSHIFT, 2 PRNG de type XORWOW, 3 autres PRNG non-LFSR. Il comprend 10 LCGS de modulus de Power-2 simples (qui défaussent les bits faibles pour atteindre des niveaux de qualité acceptables), 10 modules de puissance de-2 non-LCGS et 9 générateurs combinés basés principalement autour de LCGS et non-LCGS . Il comprend 19 versions de force réduites de CSprngs, plus une résolution complète CSprng. Parmi ceux-ci, 14 étaient basés sur des boîtes S Indirection / Dynamic (par exemple RC4, ISAAC), quatre étaient des paramétrisations Chaca / Salsa, et les 2 restants étaient des variantes de trivium. Il comprend 11 prngs largement classifiables en tant que type LFIB ou similaire, ne comptant pas les LFSR / GFSRS. Le reste (environ 35) étaient de petits PRNG chaotiques de l'état, dont 10 multiplication d'occasion et les autres étaient limités à la logique arithmétique et bit dans le sens. p>
En outre, tous les PRNG testés sont inclus dans les PRNG non recommandés dans PRACTRAND. P>
Aucune autre suite de tests n'a trouvé de biais unique. li>
ul>
Je suis heureux de recommander votre réponse, cependant, comme écrit, il n'y a aucune preuve. Pouvez-vous fournir des liens vers des papiers, ce qui sauvegarder votre demande? Ou quelques instructions sur la manière de répéter vos expériences.
Aucune preuve que ce que ce soit! Dieharder a environ 106 tests. PRACTRAND et TESTU01 sont écrits en C et C ++ et ont besoin que l'utilisateur d'intégrer leur générateur! Les plus simples jamais à utiliser jusqu'à présent sont Dieharder (forfait Ubuntu) et NIST STS (UI Python et mise en œuvre)! Je crois fermement que vous êtes biaisé à votre travail et que @CSGILSPIE mentionné dans son commentaire, vous devez fournir un document qui soutient vos créances!
Je ne suis pas si sûr d'obtenir des données aléatoires de de Pseudorandom Number Generators B> - mais je pense que vous pourriez implémenter EN.Wikipedia.org/wiki/fair_Coin#fair_results_from_a_biased_c Oin avec eux ..
Dites-vous cela parce que les valeurs générées de PRNG sont prévisibles? Je vous remercie
Oui, c'est la distinction - c'était juste un rappel pour vous de vérifier si un PRNG est bon pour votre application et que vous n'avez pas besoin d'un TRNG comme aléatoire.org