Provided by: manpages-fr-dev_4.18.1-1_all bug

NOM

       rand, rand_r, srand - Générateur de nombres pseudoaléatoires

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <stdlib.h>

       int rand(void);
       void srand(unsigned int seed);

       [[deprecated]] int rand_r(unsigned int *seedp);

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

       rand_r() :
           Since glibc 2.24:
               _POSIX_C_SOURCE >= 199506L
           glibc 2.23 and earlier
               _POSIX_C_SOURCE

DESCRIPTION

       La fonction rand() renvoie un entier pseudoaléatoire entre 0 et RAND_MAX, bornes  incluses
       (c'est-à-dire dans l'intervalle mathématique [0, RAND_MAX]).

       La  fonction  srand()  utilise  son  argument  comme  « graine »  pour la génération d'une
       nouvelle séquence de nombres pseudoalé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 pas réentrante, car elle utilise un état caché modifié  à  chaque
       appel.  Il peut s'agir simplement de la valeur de graine aléatoire pour l'appel suivant ou
       de quelque chose de plus compliqué. Afin d'obtenir un comportement reproductible dans  une
       application  threadée,  cet état doit être explicite ; cela peut être fait en utilisant la
       fonction réentrante rand_r().

       Comme rand(), rand_r() renvoie un entier pseudoaléatoire dans l'intervalle  [0, RAND_MAX].
       L'argument  seedp est un pointeur vers un unsigned int qui est utilisé pour stocker l'état
       entre des appels successifs. Si la fonction rand_r()  est  appelée  avec  la  même  valeur
       initiale  pour l'entier pointé par seedp, et que cette valeur n'est pas modifiée entre les
       appels, alors la même séquence pseudoaléatoire sera générée.

       La valeur pointée par l'argument seedp de rand_r() ne fournit qu'une  donnée  très  petite
       pour  stocker  la  valeur  d'état,  cette fonction sera donc un générateur pseudoalé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,  bornes
       incluses. La fonction srand() ne renvoie aucune valeur.

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).

       ┌────────────────────────────────────────────────────────┬──────────────────────┬─────────┐
       │InterfaceAttributValeur  │
       ├────────────────────────────────────────────────────────┼──────────────────────┼─────────┤
       │rand(), rand_r(), srand()                               │ Sécurité des threads │ MT-Safe │
       └────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

STANDARDS

       The  functions  rand()   and  srand()   conform  to  SVr4,  4.3BSD, C99, POSIX.1-2001. The
       function rand_r()  is from POSIX.1-2001. POSIX.1-2008 marks rand_r()  as obsolete.

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
       faible sont tout aussi imprévisibles que les bits de poids fort. 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 faible n'étaient pas  « aussi  aléatoires »  que
       ceux  de poids fort. 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))

EXEMPLES

       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 int graine) {
               suivant = graine;
           }

       The following program can be used to display the pseudo-random sequence produced by rand()
       when given a particular seed. When the seed is -1, the program uses a random seed.

           #include <stdio.h>
           #include <stdlib.h>

           int
           main(int argc, char *argv[])
           {
               int           r;
               unsigned int  seed, nloops;

               if (argc != 3) {
                   fprintf(stderr, "Usage: %s <graine> <nloops>\n", argv[0]);
                   exit(EXIT_FAILURE);
               }

               graine = atoi(argv[1]);
               nloops = atoi(argv[2]);

               if (seed == -1) {
                   seed = arc4random();
                   printf("seed: %u\n", seed);
               }

               srand(seed);
               for (unsigned int j = 0; j < nloops; j++) {
                   r =  rand();
                   printf("%d\n", r);
               }

               exit(EXIT_SUCCESS);
           }

VOIR AUSSI

       drand48(3), random(3)

TRADUCTION

       La  traduction  française  de  cette  page  de  manuel  a  été créée par Christophe Blaess
       <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <stephan.rafin@laposte.net>,  Thierry
       Vignaud  <tvignaud@mandriva.com>,  François Micaux, Alain Portal <aportal@univ-montp2.fr>,
       Jean-Philippe   Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)    <jean-
       luc.coulon@wanadoo.fr>,    Julien    Cristau    <jcristau@debian.org>,    Thomas   Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau  <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis
       Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et bubu <bubub@no-log.org>

       Cette traduction est une documentation libre ; veuillez vous reporter  à  la  GNU  General
       Public   License   version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  concernant  les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à ⟨debian-l10n-french@lists.debian.org⟩.