Loading

NOM

       rand, rand_r, srand - Générateur de nombres pseudo-aléatoires.

SYNOPSIS

       #include <stdlib.h>

       int rand(void);

       int rand_r(unsigned int *seedp);

       void srand(unsigned int seed);

   Exigences  de  macros  de  test  de  fonctionnalités  pour  la  glibc (voir
   feature_test_macros(7)) :

       rand_r() : _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_SOURCE

       La fonction rand() renvoie un entier pseudo-aléatoire dans l’intervalle
       [0, RAND_MAX].

       La  fonction  srand()  utilise  son  argument  comme « graine » pour la
       génération d’une nouvelle séquence de  nombres  pseudo-aléatoires,  qui
       seront  fournis  par  rand().  Ces  séquences  sont  reproductibles  en
       appelant srand() avec la même valeur de graine.

       Si aucune graine originale n’est fournie, la fonction  rand()  commence
       en utilisant la valeur 1.

       La fonction rand() n’est ni réentrante ni sûre en contexte multithread,
       car elle utilise un état interne modifié à chaque appel. Il peut s’agir
       simplement de la valeur de graine aléatoire pour l’appel suivant, ou il
       peut s’agir de quelque chose  de  plus  compliqué.  Afin  d’obtenir  un
       comportement  reproductible  dans une application multithread, cet état
       doit être stocké dans une variable fournie explicitement.  La  fonction
       rand_r()  est appelée avec un pointeur vers un unsigned int qui servira
       d’état d’interne. Il s’agit d’une donnée très petite  pour  stocker  la
       valeur  d’état, cette fonction sera donc un générateur pseudo-aléatoire
       faible. Essayez donc drand48_r(3) à sa place.

VALEUR RENVOYÉE

       Les fonctions rand() et rand_r() renvoient un nombre entier entre 0  et
       RAND_MAX. La fonction srand() ne renvoie aucune valeur.

CONFORMITÉ

       Les  fonctions  rand()  et srand() sont conformes à SVr4, BSD 4.3, C89,
       C99,  POSIX.1-2001.  La  fonction  rand_r()  vient   de   POSIX.1-2001.
       POSIX.1-2008 marque rand_r() comme étant obsolète.

NOTES

       Les  versions  de  rand()  et  srand()  de  la  bibliothèque C de Linux
       utilisent le même générateur de nombres  aléatoires  que  random(3)  et
       srandom(3),   ainsi   les   bits  de  poids  faibles  sont  tout  aussi
       imprévisibles que les bits de poids forts. Ceci n’est pas le  cas  avec
       les  anciennes implémentations de rand() ou d’actuelles implémentations
       sur des systèmes différents, où les bits de poids faibles n’étaient pas
       « aussi  aléatoires»  que  ceux  de  poids  forts. N’utilisez pas cette
       fonction dans des applications conçues pour être portables et lorsqu’un
       bon caractère aléatoire est nécessaire. (Utilisez plutôt random(3))

EXEMPLE

       POSIX.1-2001  fournit  l’exemple suivant d’une implémentation de rand()
       et srand(),  potentiellement  utile  lorsqu’on  a  besoin  de  la  même
       séquence sur deux machines différentes.

           static unsigned long suivant = 1;

           /* RAND_MAX supposé être égal à 32767 */
           int mon_rand(void) {
               suivant = suivant * 1103515245 + 12345;
               return((unsigned)(suivant/65536) % 32768);
           }

           void mon_srand(unsigned graine) {
               suivant = graine;
           }

VOIR AUSSI

       drand48(3), random(3)

COLOPHON

       Cette  page  fait  partie  de  la  publication 3.23 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler  des
       anomalies       peuvent       être       trouvées      à      l’adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Cette page de manuel a été traduite  et  mise  à  jour  par  Christophe
       Blaess  <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
       Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et  mise  à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement         gérées         par         Nicolas         François
       <nicolas.francois@centraliens.net>    et    l’équipe   francophone   de
       traduction de Debian.

       Veuillez  signaler  toute  erreur   de   traduction   en   écrivant   à
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de  ce  document
       en utilisant la commande « man -L C <section> <page_de_man> ».

                                 29 août 2008                          RAND(3)