En C, comment éviter que mes tirages au hasard 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 |
---|