Provided by: manpages-fr-dev_4.15.0-9_all bug

NOM

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

SYNOPSIS

       #include <stdlib.h>

       long random(void);
       void srandom(unsigned int graine);

       char *initstate(unsigned int graine, char *état, size_t n);
       char *setstate(char *état);

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

       random(), srandom(), initstate(), setstate() :
       _XOPEN_SOURCE >= 500
           || /* Depuis la glibc 2.19 : */ _DEFAULT_SOURCE
           || /* Versions <= 2.19 de la glibc : */ _BSD_SOURCE || _SVID_SOURCE

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 pseudoaléatoires entre 0  et  2^31 - 1.  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 nombres pseudoalé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 nombres aléatoires. Plus grande est la table d'états,
       meilleurs seront les nombres aléatoires. Les valeurs « optimales » pour la  taille  de  la
       table d'états n sont 8, 32, 64, 128 et 256 octets ; les autres montants seront arrondis au
       montant connu le plus proche. Utiliser moins de huit octets provoque  une  erreur.  graine
       est  la  graine  utilisée  pour  l'initialisation,  indiquant  un  point de départ pour la
       séquence de nombres aléatoires, 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'états  état  est  alors  utilisée comme générateur de nombres aléatoires jusqu'au
       prochain appel de initstate() ou setstate().  état  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 (2^31) - 1. La fonction srandom() ne
       renvoie pas de valeur.

       La fonction initstate() renvoie un pointeur  sur  la  table  d'états  précédente.  En  cas
       d'échec, elle renvoie NULL et errno contient le code d'erreur.

       La  fonction  setstate()  renvoie  un  pointeur  sur  la  table d'états précédente. En cas
       d'échec, NULL est renvoyé et errno contient le code d'erreur.

ERREURS

       EINVAL Le paramètre état de setstate() était NULL.

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

ATTRIBUTS

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

       ┌────────────────────────────────────────────────────────┬──────────────────────┬─────────┐
       │InterfaceAttributValeur  │
       ├────────────────────────────────────────────────────────┼──────────────────────┼─────────┤
       │random(), srandom(), initstate(), setstate()            │ Sécurité des threads │ MT-Safe │
       └────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

CONFORMITÉ

       POSIX.1-2001, POSIX.1-2008, 4.3BSD.

NOTES

       La fonction random() ne doit pas être utilisée dans des  programmes  multithreadés  où  le
       comportement doit être reproductible. Utilisez random_r(3) dans ce cas.

       La génération de nombres aléatoires 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,  3e éd.)  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),  2e éd. ;  Reading,  Massachusetts :
       Addison-Wesley Publishing Company, 1981.

BOGUES

       D'après POSIX, initstate() devrait renvoyer NULL en cas d'erreur. Dans la mise en œuvre de
       la  glibc, errno est renseigné en cas d'erreur comme spécifié, mais la fonction ne renvoie
       pas NULL.

VOIR AUSSI

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

COLOPHON

       Cette page fait partie de la publication 5.13 du projet man-pages Linux.  Une  description
       du  projet et des instructions pour signaler des anomalies et la dernière version de cette
       page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

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