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

NOM

       drand48,  erand48,  lrand48,  nrand48,  mrand48,  jrand48, srand48, seed48, lcong48 - Générer des nombres
       pseudoaléatoires uniformément distribués

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <stdlib.h>

       double drand48(void);
       double erand48(unsigned short xsubi[3]);

       long lrand48(void);
       long nrand48(unsigned short xsubi[3]);

       long mrand48(void);
       long jrand48(unsigned short xsubi[3]);

       void srand48(long valeur_graine);
       unsigned short *seed48(unsigned short graine_16v[3]);
       void lcong48(unsigned short param[7]);

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

       Pour toutes les fonctions ci-dessus :
           _XOPEN_SOURCE
               || /* glibc >= 2.19 : */ _DEFAULT_SOURCE
               || /* glibc <= 2.19 : */ _SVID_SOURCE

DESCRIPTION

       Ces fonctions génèrent des nombres pseudoaléatoires en utilisant un algorithme de congruence linéaire  et
       une arithmétique entière sur 48 bits.

       Les  fonctions  drand48()  et  erand48()  renvoient  des  valeurs  positives  en virgule flottante double
       précision uniformément distribuées dans l'intervalle [0.0 ; 1.0[.

       Les fonctions lrand48() et nrand48() renvoient des entiers longs positifs, uniformément  distribués  dans
       l'intervalle [0 ; 2^31[.

       Les  fonctions  mrand48()  et  jrand48() renvoient des entiers longs signés, uniformément distribués dans
       l'intervalle [-2^31 ; 2^31[.

       Les fonctions srand48(), seed48() et lcong48() sont des fonctions d'initialisation. L'une  d'entre  elles
       doit  être  appelée  avant  d'utiliser  les  fonctions  drand48(),  lrand48() ou mrand48(). Les fonctions
       erand48(), nrand48() et jrand48() ne nécessitent pas de fonction d'initialisation.

       Toutes ces fonctions engendrent une séquence d'entiers Xi sur 48 bits suivant la  formule  de  congruence
       linéaire :

           Xn+1 = (aXn + c) mod m, avec n >= 0

       Le  paramètre  m vaut 2^48, ainsi l'arithmétique entière sur 48 bits est respectée. Sauf si lcong48() est
       appelée, a et c valent :

           a = 0x5DEECE66D
           c = 0xB

       Les valeurs renvoyées  par  les  fonctions  drand48(),  erand48(),  lrand48(),  nrand48(),  mrand48()  ou
       jrand48() sont calculées en générant tout d'abord le Xi suivant sur 48 bits dans la séquence. Ensuite, le
       nombre de bits approprié au type de la valeur de retour est copié en partant des bits de poids fort de Xi
       et converti dans la valeur renvoyée.

       Les  fonctions drand48(), lrand48() et mrand48() mémorisent le dernier Xi sur 48 bits créé dans un tampon
       interne. Les fonctions erand48(), nrand48() et jrand48() nécessitent que le programme appelant  fournisse
       un  emplacement  de  stockage  pour  les  valeurs  successives  de  Xi.  Cet  emplacement  est le tableau
       correspondant à l'argument xsubi. Ces fonctions sont initialisées en plaçant la  valeur  initiale  de  Xi
       dans le tableau avant le premier appel de la fonction.

       La  fonction  d'initialisation  srand48()  définit  les  32 bits  de  poids  fort  de  Xi avec l'argument
       valeur_graine. Les 16 bits de poids faible sont initialisés avec la valeur arbitraire 0x330E.

       La fonction d'initialisation seed48() définit la valeur de Xi avec la valeur sur 48 bits  spécifiée  dans
       l'argument  seed16v.  La valeur précédente de Xi est copiée dans un tampon interne et un pointeur vers ce
       tampon est renvoyé par seed48().

       La fonction d'initialisation lcong48() permet à l'utilisateur de définir des valeurs initiales de  Xi,  a
       et  c.  Dans le tableau param, les éléments param[0-2] spécifient Xi, param[3-5] spécifient a et param[6]
       spécifie c. Après un appel à lcong48(), un appel ultérieur  à  srand48()  ou  à  seed48()  rétablira  les
       valeurs normales de a et c.

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).
       ┌───────────────────────────────────────────────────────┬──────────────────────┬────────────────────────┐
       │ InterfaceAttributValeur                 │
       ├───────────────────────────────────────────────────────┼──────────────────────┼────────────────────────┤
       │ drand48(), erand48(), lrand48(), nrand48(),           │ Sécurité des threads │ MT-Unsafe race:drand48 │
       │ mrand48(), jrand48(), srand48(), seed48(), lcong48()  │                      │                        │
       └───────────────────────────────────────────────────────┴──────────────────────┴────────────────────────┘

       Les  fonctions ci-dessus enregistrent globalement l'état du générateur de nombre aléatoire. Elles ne sont
       donc pas sûres dans un contexte multithread.

STANDARDS

       POSIX.1-2008.

HISTORIQUE

       POSIX.1-2001, SVr4.

VOIR AUSSI

       rand(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 Lucien Gentis <lucien.gentis@waika9.com>

       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                                         drand48(3)