RAND(3) Manuel du programmeur Linux RAND(3)
NOM
rand, srand - Generateur de nombres aleatoires.
SYNOPSIS
#include < stdlib.h>
int rand ( void);
void srand ( unsigned int seed);
DESCRIPTION
La fonction rand() renvoie un entier pseudo-aleatoire
entre 0 et RAND_MAX.
La fonction srand() utilise son argument comme " graine"
pour la generation d´une nouvelle sequence de nombres
pseudo-aleatoires, qui seront fournis par rand(). Ces
sequences sont reproductibles en appelant srand() avec la
meme valeur de graine.
Si aucune graine originale n´est fournie, la fonction
rand() commence en utilisant la valeur 1.
VALEUR RENVOYEE
La fonction rand() renvoie un nombre entier entre 0 et
RAND_MAX. La fonction srand() ne renvoie aucune valeur.
NOTES
Les versions de rand() et srand() de la bibliotheque C de
Linux utilisent le meme generateur de nombres aleatoires
que random() et srandom(), ainsi les bits de poids faibles
sont tout aussi imprevisibles que les bits de poids forts.
Ceci n´est pas le cas avec les anciennes implementations
de rand(), ou les bits de poids faibles n´etaient pas
" aussi aleatoires" que ceux de poids forts.
Dans Numerical Recipes in C: The Art of Scientific Comput-
ing ( William H. Press, Brian P. Flannery, Saul A. Teukol-
sky, William T. Vetterling; New York: Cambridge University
Press, 1990 ( 1st ed, p. 207)), le commentaire suivant
apparait :
" Si vous desirez engendrer un entier aleatoire
entre 1 et 10, vous devez toujours proceder en
utilisant les bits de poids forts, comme dans :
j=1+(int) ( 10.0*rand()/(RAND_MAX+1.0));
et jamais ainsi :
j=1+(rand() % 10);
( car cette derniere version utilise les bits de
poids faibles)."
La generation de nombres aleatoires est un domaine com-
plexe. Le livre Numerical Recipes in C ( reference
ci-dessus) fournit une excellente presentation pratique
d´un generateur aleatoire dans le chapitre 1 ( Random Num-
bers).
Pour une discussion plus theorique, qui aborde egalement
en profondeur d´autres domaines, voir le chapitre 3
( Random Numbers) du livre de Donald E. Knuth The Art of
Computer Programming, volume 2 ( Seminumerical Algorithms),
2nd ed.; Reading, Massachusetts: Addison-Wesley Publishing
Company, 1981.
[NDT] : Les 3 volumes de " Art of Computer Programming"
n´existent pas en version francaise a ma connaissance.
C´est neanmoins un ouvrage que je recommande fortement,
meme si la lecture en version anglaise le rend un peu
aride...
Je ne sais pas si " Numerical Recipes in C" est disponible
en traduction francaise.
CONFORMITE
SVID 3, BSD 4.3, ISO 9899
VOIR AUSSI
random(3), srandom(3), initstate(3), setstate(3)
TRADUCTION
Christophe Blaess, 1997.
GNU 5 Novembre 1996 RAND(3)
Pour le ou logique c´est || ( deux barres)