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

NOM

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

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

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
               || /* glibc >= 2.19 : */ _DEFAULT_SOURCE
               || /* glibc <= 2.19 : */ _SVID_SOURCE || _BSD_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, aa 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 utilise 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  utilise  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 est défini pour indiquer l'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 │
       └──────────────────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

STANDARDS

       POSIX.1-2008.

HISTORIQUE

       POSIX.1-2001, 4.3BSD.

NOTES

       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.

AVERTISSEMENTS

       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.

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)

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

Pages du manuel de Linux 6.9.1                     2 mai 2024                                          random(3)