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 – générer des nombres aléatoires dans un intervalle par rapport à une moyenne
- Comment obtenir un plus grand nombre aléatoire à partir de la fonction c rand ()
- Générer un nombre aléatoire en C dans une plage et une étape spécifique
- créer un nombre aléatoire inférieur à une valeur donnée max
- rand avec une graine ne retourne pas au hasard si la fonction est bouclée
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.)