Premièrement, prendre l'heure ainsi ne fournit pas suffisamment de suites aléatoires différentes - loin s'en faut, conduisant à des biais importants dans les résultats. J'ai eu pas mal de problème avec ça dans le passé. Par ailleurs, ceci se complique fortement si les calculs se font sur des machines parallèles (ce qui est mon cas) car plusieurs calculs peuvent partir au même moment, et donc donner exactement les mêmes résultats !
Bonjour,
D'après la documentation de set.seed(), il n'est pas nécessaire d'initialiser la graine en début de session (sauf pour obtenir des séries identiques comme expliqué ci-dessus) car celle-ci est par défaut initialisée à partir de l'heure système ou de la dernière valeur obtenue par le générateur:
"Initially, there is no seed; a new one is created from the current time (and since R 2.14.0, the process ID) when one is required. Hence different sessions will give different simulation results, by default. However, the seed might be restored from a previous session if a previously saved workspace is restored."
Je crois comprendre que set.seed(NULL) initialise la graine à partir de l'heure système mais la documentation n'est pas parfaitement claire:
"If called with seed = NULL it re-initializes (see ‘Note’) as if no seed had yet been set." (la note correspond au texte ci-dessus)
Pour initialiser explicitement la graine à partir de l'heure système, mieux vaut ne pas utiliser l'heure exprimée en secondes qui risque de donner plusieurs fois la même valeur en cas de calcul parallèle.
Utiliser les fractions de seconde devrait régler le problème comme le montre cet exemple qui donne (presque toujours) des heures différentes correspondant au temps d'exécution des commandes figurant sur la même ligne:
Code : Tout sélectionner
t <- as.numeric(Sys.time()) ; sprintf("%1.20f",t) ; t <- as.numeric(Sys.time()) ; sprintf("%1.20f",t)
Donc :
Code : Tout sélectionner
t <- as.numeric(Sys.time())
seed <- 1e8 * (t - floor(t))
set.seed(seed); print(seed)
Je ne l'ai pas inventé, je l'ai trouvé sur ce site :
http://stackoverflow.com/questions/10910698/questions-about-set-seed-in-r