Provided by: manpages-fr-dev_3.32d0.2p4-1_all bug

NOM

       random, srandom, initstate, setstate - Générateur de nombres aléatoires

SYNOPSIS

       #include <stdlib.h>

       long int random(void);

       void srandom(unsigned int seed);

       char *initstate(unsigned int seed, char *state, size_t n);
       char *setstate(char *state);

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

       random(), srandom(), initstate(), setstate() :
           _SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE >= 500 ||
           _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED

DESCRIPTION

       La  fonction random() utilise un générateur de nombre aléatoire non linéaire (« non-linear
       additive feedback random number generator ») utilisant une table par défaut de 31  entiers
       longs  pour  renvoyer successivement des nombres pseudo-aléatoires entre 0 et RAND_MAX. La
       période de ce générateur est très grande, approximativement 16 * ((2^31) - 1).

       La fonction srandom() utilise son argument comme « graine » pour  engendrer  une  nouvelle
       séquence  de  nombre  pseudo-aléatoires qui seront fournis lors des appels à random(). Ces
       séquences sont reproductibles en invoquant srandom() avec la même graine. Si aucune graine
       n'est fournie, La fonction random() utilise automatiquement une graine originale de valeur
       1.

       La fonction initstate() permet d'initialiser une table d'états state pour l'utiliser  avec
       random().  La  taille n de la table est utilisée par initstate() pour déterminer le niveau
       de sophistication du générateur de nombre aléatoires. Plus grande  est  la  table  d'état,
       meilleurs   seront   les   nombres   aléatoires.   seed   est   la  graine  utilisée  pour
       l'initialisation, indiquant un point de départ pour la séquence de nombres, et  permet  de
       redémarrer au même endroit.

       La  fonction  setstate()  modifie  la  table d'états utilisée par la fonction random(). La
       table d'état state est alors utilisée comme  générateur  de  nombres  aléatoires  jusqu'au
       prochain  appel  de  initstate()  ou  setstate(). state doit d'abord être initialisée avec
       initstate() ou être le résultat d'un appel précédent à setstate()

VALEUR RENVOYÉE

       La fonction random() renvoie une valeur entre 0 et  RAND_MAX.  La  fonction  srandom()  ne
       renvoie  pas  de  valeur. La fonction initstate() renvoie un pointeur sur la table d'états
       précédente. La fonction setstate() renvoie un pointeur sur la table d'états précédente, ou
       NULL en cas d'erreur.

ERREURS

       EINVAL Une table d'états de moins de 8 octets a été fournie à initstate().

CONFORMITÉ

       BSD 4.3, POSIX.1-2001.

NOTES

       Actuellement,  les valeurs optimales n, pour la taille de la table d'états sont 8, 32, 64,
       128, et 256 octets. Les autres valeurs seront  arrondies  à  la  taille  la  plus  proche.
       Essayer d'utiliser moins de 8 octets déclenche une erreur.

       Cette  fonction ne devrait pas être utilisée si plusieurs threads utilisent random() et si
       le comportement doit être reproductible. Utilisez random_r(3) dans ce cas.

       La génération de nombres alétoires est un sujet complexe. Numerical Recipes in C: The  Art
       of  Scientific  Computing (William H. Press, Brian P. Flannery, Saul A. Teukolsky, William
       T. Vetterling; New York: Cambridge University Press, 2007, 3rd ed.) fournit une excellente
       discussion sur les problèmes pratiques de génération de noms aléatoires dans le chapitre 7
       (Random Numbers).

       Pour une discussion plus théorique, qui aborde également 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.

VOIR AUSSI

       drand48(3), rand(3), random_r(3), srand(3)

COLOPHON

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

TRADUCTION

       Depuis    2010,    cette   traduction   est   maintenue   à   l'aide   de   l'outil   po4a
       <URL:http://po4a.alioth.debian.org/> par l'équipe de traduction  francophone  au  sein  du
       projet perkamon <URL:http://perkamon.alioth.debian.org/>.

       Christophe   Blaess   <URL:http://www.blaess.fr/christophe/>   (1996-2003),  Alain  Portal
       <URL:http://manpagesfr.free.fr/> (2003-2006). Nicolas François et l'équipe francophone  de
       traduction de Debian (2006-2009).

       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> ».