En C, comment éviter que les tirages aléatoires soient toujours les mêmes ?
En C, la fonction rand() génère des nombres aléatoires sur la base d'une graine (seed) . Si cette graine n'est pas initialisée, il est possible qu'à chaque exécution du programme, les nombres générés soient identiques. La graine peut être définie avec la fonction srand().
La solution classiquement utilisée consiste à initialiser la graine avec l'heure courante (qui change constamment) :
srand (time(NULL));
L'exemple suivant génère des nombres aléatoires :
#include <stdio.h> /* printf, NULL */
#include <stdlib.h> /* srand, rand */
#include <time.h> /* time */
int main ()
{
printf ("Premier nombre : %d\n", rand()%100);
srand (time(NULL));
printf ("Deuxième nombre : %d\n", rand()%100);
srand (1);
printf ("Encore le premier nombre : %d\n", rand()%100);
return 0;
}
En C, la fonction rand() génère des nombres aléatoires sur la base d'une graine (seed) . Si cette graine n'est pas initialisée, il est possible qu'à chaque exécution du programme, les nombres générés soient identiques. La graine peut être définie avec la fonction srand().
La solution classiquement utilisée consiste à initialiser la graine avec l'heure courante (qui change constamment) :
srand (time(NULL));
L'exemple suivant génère des nombres aléatoires :
#include <stdio.h> /* printf, NULL */
#include <stdlib.h> /* srand, rand */
#include <time.h> /* time */
int main ()
{
printf ("Premier nombre : %d\n", rand()%100);
srand (time(NULL));
printf ("Deuxième nombre : %d\n", rand()%100);
srand (1);
printf ("Encore le premier nombre : %d\n", rand()%100);
return 0;
}
En C, la fonction rand() génère des nombres aléatoires sur la base d'une graine (seed) . Si cette graine n'est pas initialisée, il est possible qu'à chaque exécution du programme, les nombres générés soient identiques.
La solution classiquement utilisée consiste à initialiser la graine avec l'heure courante (qui change constamment) :
srand (time(NULL));
L'exemple suivant génère des nombres aléatoires :
#include <stdio.h> /* printf, NULL */
#include <stdlib.h> /* srand, rand */
#include <time.h> /* time */
int main ()
{
printf ("Premier nombre : %d\n", rand()%100);
srand (time(NULL));
printf ("Deuxième nombre : %d\n", rand()%100);
srand (1);
printf ("Encore le premier nombre : %d\n", rand()%100);
return 0;
}
| # | ID | Query | URL | Count |
|---|