Dans ce document , qui concerne la commande "set seed", les gens de Stata discutent des problèmes liés à la définition des graines lors de la génération de nombres pseudo-aléatoires.
Un "non" notable est "ne pas utiliser en série la séquence de nombres naturels comme graines, car cela a un modèle et met en danger le pseudo-aléatoire".
Un «quart » notable, en plaisantant , consiste à définir une seule graine au cours de votre vie , puis à enregistrer «l'état» du processus généré à la fin de chaque expérience, afin que l'expérience suivante se poursuive au point où le processus s'est arrêté.
De toute évidence, les conseils ci-dessus dépendent du nombre attendu de nombres pseudo-aléatoires que l'on générera au cours de sa vie de recherche. Un twister de Mersenne couvrirait peut-être les besoins à vie de nombreux chercheurs ...
Maintenant, je n'ai pas beaucoup d'expérience en ce qui concerne les PRNG en théorie ou en pratique, donc je ne peux pas discuter de ces suggestions - elles devraient être prouvées valides ou invalides pour des raisons théoriques et des statistiques mathématiques dures.
Donc, mes questions sont
1) Pouvez-vous aider à expliquer ou à invalider les conseils donnés ci-dessus, ou indiquer une référence qui traite de ces questions?
2) Pouvez-vous fournir des références qui proposent des "meilleures pratiques" pour la création de graines?
3) Comment procédez-vous dans votre propre travail et pourquoi?
Un thread connexe (bien que beaucoup plus ciblé) est
Set seed avant chaque bloc de code ou une fois par projet?
J'ai le sentiment que cela devrait peut-être être un wiki communautaire, les mods s'il vous plaît décider à ce sujet.
la source
Réponses:
Pour ce que ça vaut, c'est basé sur l'expérience et non sur l'analyse mathématique:
Je pense qu'à moins que vous ne fassiez de la cryptographie, où les modèles subtils peuvent être très mauvais, la graine que vous définissez ne fait aucune différence, tant que vous utilisez de bons PRNG acceptés comme Mersenne Twister et pas d'anciens comme des générateurs linéaires congruents. Pour autant que je sache, il n'y a aucun moyen que vous pouvez dire ce nombre aléatoire sortira d'une graine donnée sans réellement en cours d' exécution PRNG ( en supposant qu'il est un décent), sinon vous simplement prendre ce nouvel algorithme et l' utilisation que comme générateur de nombres aléatoires.
Autre perspective: pensez-vous que des motifs subtils dans votre simulation Monte-Carlo sont susceptibles d'être d'une ampleur plus grande que toutes les erreurs de mesure, confondantes et erreurs introduites par d'autres hypothèses de modélisation?
Je voudrais simplement utiliser une graine aléatoire au début pour la reproductibilité, et ne pas en définir une avant chaque appel, sauf si je fais du débogage, où je dois m'assurer que deux algorithmes différents produisent le même résultat pour les mêmes données d'entrée exactes.
Avertissement: si vous simulez des réacteurs nucléaires ou des systèmes de contrôle de missiles ou des prévisions météorologiques, il est préférable de consulter des experts du domaine, je ne prends aucune responsabilité dans ce cas.
la source