François Bonnot a écrit :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)
Non, ceci ne marche pas, je le crains, et ce pour deux raisons.
La première est que l'argument à fournir à set.seed() est un int (ou est casté dans un int). Du coup, même si on affiche plein de décimales, ca ne change rien. Il suffit d'essayer :
Code : Tout sélectionner
as.numeric(Sys.time());as.numeric(Sys.time())
La seconde est que si on veux travailler sur des fractions de secondes, en fait le système ne descend pas en dessous de la milliseconde, ce qui laisse encore largement trop peu de possibilités pour avoir des suites vraiment aléatoires. C'est une des raisons pour lesquelles je passe au C et tape dans /dev/random ou /dev/urandom.
HTH, Eric.