Provided by: manpages-fr-dev_4.19.0-7_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(),         │ Sécurité des threads │ MT-Unsafe race:drand48 │
       │nrand48(), 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-2001, POSIX.1-2008, 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  ⟨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⟩.