44 votes

Utilisation du rand() de stdlib à partir de plusieurs threads

J'ai plusieurs threads qui exécutent tous la même fonction. Dans chacun d'eux, ils génèrent plusieurs fois un nombre aléatoire différent. Nous avons essayé de le faire en mettant srand(time(0)) au début de la fonction, mais il semble qu'ils obtiennent tous le même nombre.

Doit-on appeler srand(time(0)) une seule fois par programme, c'est-à-dire au début de main (par exemple), au début de chaque fonction appelée plusieurs fois, ou autre chose ?

9voto

Peter Heath Points 59

Si vous lancez tous les threads en même temps, le temps envoyé à srand est probablement le même pour chaque thread. Comme ils ont tous la même graine, ils renvoient tous la même séquence. Essayez d'utiliser autre chose comme une adresse mémoire à partir d'une variable locale.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X