rand () retourne le même nombre

Je fais un exemple simple en C avec rand () mais la fonction retourne toujours le même nombre malgré que j’utilise srand ().

C’est le code:

#include  #include  #include  int generate(int min, int max) { srand(time(NULL)); return rand() % (max - min + 1) + min; } int main() { int i; for (i = 0; i < 10; i++) { printf("Number random %d = %d\n", i, generate(1, 100)); } return 0; } 

Exécution :

Nombre aléatoire 0 = 40 Nombre aléatoire 1 = 40 Nombre aléatoire 2 = 40 Nombre aléatoire 3 = 40 Nombre aléatoire 4 = 40 Nombre aléatoire 5 = 40 Nombre aléatoire 6 = 40 Nombre aléatoire 7 = 40 Nombre aléatoire 8 = 40 Nombre aléatoire 9 = 40

C’est parce que vous le ré-alimentez à chaque fois et que votre programme fonctionne probablement très rapidement, votre valeur de départ (time ()) est la même pour chaque appel, son incrément le plus petit étant de 1 seconde.

Essayez de déplacer srand() dans main() place et appelez-le une fois.

L’appel répété de srand ruine les propriétés statistiques du générateur.

Appelez pas plus d’une fois.

(Le comportement observé est dû au time(NULL) renvoyant la même valeur à chaque itération de la boucle.)