I – Introduction
II – Les fonctions du C
II-A – rand
II-B – srand
III – Une méthode (trop) simple
IV – Mettons-y notre grain de sable
V – Fixons des limites
VI – Jouons à la loterie
VII – Comment calculer le hasard
VIII – Conclusion
IX – Remerciements
Introduction
Pour commencer, je tiens à rectifier le titre de ce tutoriel. En effet avec un ordinateur il est impossible de générer une suite de nombres réellement aléatoires, nous devrons nous contenter de nombres pseudo-aléatoires.
Je vais donc vous proposer plusieurs méthodes, de la plus simple à la plus compliquée, pour obtenir une série de nombres difficilement déterminable à l’avance (dite plus communément aléatoire).
Les fonctions du C
Avant de nous lancer dans la pratique, voici une brève description des fonctions permettant d’obtenir un nombre pseudo-aléatoire en C. Ces fonctions sont déclarées dans stdlib.h.
II-A – rand
Prototype :
int rand(void);
C’est cette fonction qui retourne un nombre aléatoire à chaque appel. Ce nombre est compris entre 0 et RAND_MAX.
II-B – srand
Prototype :
void srand(unsigned int seed);
La fonction srand permet d’initialiser le générateur de nombres pseudo-aléatoires avec une graine différente (1 par défaut). Elle ne doit être appelée qu’une seule fois avant tout appel à rand.
Une méthode (trop) simple
Voici une première méthode :
int number = rand();
Je vous avais prévenu!
Voici un exemple tout simple pour tester nos différentes méthodes :
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int my_rand (void);
int main (void)
{
int i;
for (i = 0; i<1000; i++)
{
printf (« %d\n », my_rand());
}
return (EXIT_SUCCESS);
}
int my_rand (void)
{
return (rand ());
}
A partir de maintenant, seule my_rand sera donnée puisque le reste du programme sera le même.
Relancez le programme plusieurs fois et observez la suite de valeurs : elle est identique à chaque appel ! Ceci est dû à la graine qui est toujours la même : même graine, même suite de nombres !
On réservera donc cette méthode lorsque l’on a besoin d’un tableau d’entiers, pour éviter d’avoir à le remplir à la main.
……..
Cours les nombres aléatoires en C (84 KO) (Cours PDF)