-
cpu_time plus précis
Bonjour,
Dans un programme je suis amené à générer des nombres aléatoires, et comme j'ai besoin qu'ils soient tous différents je change le germe grâce à
Code:
call srand(time(1)+time(2)+time(3))
où dans chacune des valeurs de time sont respectivement placées les valeurs des heures, minutes et secondes.
Mon problème est que ce changement de germe est dans une boucle, et s'execute plusieurs fois par seconde. Du coup même pour une boucle de 100 itérations je me retrouve toujours avec le même germe (puisqu'il ne s'est pas encore écoulée une seconde).
Connaissaiez-vous une technique pour que le germe soit modifié beaucoup plus rapidement que juste toutes les secondes?
Merci
-
Une piste possible: sur les processeurs Pentium et supérieurs il existe une instruction qui lit le compteur d'horloge en 64 bits.
-
J'ai vu qu'en C il y a une fonction qui permet de calculer à la nanoseconde près.
Je n'en demande pas tant, mais un peu mieux que la seconde serait quand même appréciable.
-
bonjour,
pourquoi vouloir réinitialiser le seed plusieurs fois dans le programme ? c'est finalement une bonne façon de faire apparaitre le problème que tu observes :)
à ta place j'initialiserai le seed une et une seule fois par programme.
-
Justement non, puisque pour un même germe j'aurais des valeurs pseudo-aléatoires, alors que moi ce qu'il me faut ce sont des valeurs différentes à chaque fois (en fait dans mon programme, si le tirage ne me convient pas je lui demande d'en faire un autre, donc si les valeurs ne changent pas ça ne sert à rien).
-
tu auras toujours des valeurs pseudo-aléatoires, même si tu changes plusieurs fois le seed au cours d'un même programme.
si tu as le même seed entre deux exécutions d'un même programmes oui en effet, tu auras toujours la même suite de nombres mais il suffit d'avoir un seed différent à chaque programme (à moins que tu lances ton programme plusieurs fois par secondes :aie:) ce n'est pas la peine d'initialiser le seed à chaque fois que tu veux faire un rand.