7
votes

set.sed avec R 2.15.2

Ma compréhension est que d'utiliser set.sed.sed assure la reproductibilité, mais ce n'est pas le cas avec le code R suivant dans R 2.15.2 . Je manque quelque chose ici? XXX


0 commentaires

3 Réponses :


21
votes

set.sed () réinitialise le générateur de nombres aléatoires . xxx


0 commentaires

12
votes

Tout appel qui utilise le générateur de nombres aléatoires modifiera la graine actuelle, même si vous l'avez définie manuellement avec set.sed.Seed code>.

set.seed(1)
x <- .Random.seed # get the current seed
runif(10) # uses random number generator, so changes current seed
y <- .Random.seed
identical(x, y) # FALSE


0 commentaires

3
votes

Il convient de souligner ici que la séquence de chiffres est toujours reproductible à chaque fois que vous définissez la graine, en raison de cette réinitialisation.

SO avec chaque appel ultérieur à E. RNorm Vous obtenez des réponses différentes à chaque appel, Vous allez toujours obtenir la même séquence de nombres à partir du point que la graine a été définie . < p> par exemple, par la question originale: xxx

produit la même séquence de 10 numéros que: xxx

ou < / p> xxx

ou quelle que soit la série d'appels vers RNorm .

Le point ici est que Si vous définissez la graine une fois Au début d'un script, vous obtiendrez le même ensemble de nombres aléatoires générés chaque fois que vous exécutez l'ensemble du script , tout en obtenant un ensemble de numéros différent de chaque appel de générateur de nombres aléatoires dans le code. En effet, vous courez sur la même séquence de cette graine au début. Cela peut être une bonne chose, et cela signifie que si vous voulez un script reproductible, vous pouvez définir la graine une fois au début.


0 commentaires