Loading

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  (voir
   feature_test_macros(7)) :

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

       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. Les fonctions initstate()
       et setstate() renvoient 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.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> ».