drand48(3) Library Functions Manual drand48(3) NOM drand48, erand48, lrand48, nrand48, mrand48, jrand48, srand48, seed48, lcong48 - Generer des nombres pseudoaleatoires uniformement distribues BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include 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 fonctionnalites 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 generent des nombres pseudoaleatoires en utilisant un algorithme de congruence lineaire et une arithmetique entiere sur 48 bits. Les fonctions drand48() et erand48() renvoient des valeurs positives en virgule flottante double precision uniformement distribuees dans l'intervalle [0.0 ; 1.0[. Les fonctions lrand48() et nrand48() renvoient des entiers longs positifs, uniformement distribues dans l'intervalle [0 ; 2^31[. Les fonctions mrand48() et jrand48() renvoient des entiers longs signes, uniformement distribues dans l'intervalle [-2^31 ; 2^31[. Les fonctions srand48(), seed48() et lcong48() sont des fonctions d'initialisation. L'une d'entre elles doit etre appelee avant d'utiliser les fonctions drand48(), lrand48() ou mrand48(). Les fonctions erand48(), nrand48() et jrand48() ne necessitent pas de fonction d'initialisation. Toutes ces fonctions engendrent une sequence d'entiers Xi sur 48 bits suivant la formule de congruence lineaire : Xn+1 = (aXn + c) mod m, avec n >= 0 Le parametre m vaut 2^48, ainsi l'arithmetique entiere sur 48 bits est respectee. Sauf si lcong48() est appelee, a et c valent : a = 0x5DEECE66D c = 0xB Les valeurs renvoyees par les fonctions drand48(), erand48(), lrand48(), nrand48(), mrand48() ou jrand48() sont calculees en generant tout d'abord le Xi suivant sur 48 bits dans la sequence. Ensuite, le nombre de bits approprie au type de la valeur de retour est copie en partant des bits de poids fort de Xi et converti dans la valeur renvoyee. Les fonctions drand48(), lrand48() et mrand48() memorisent le dernier Xi sur 48 bits cree dans un tampon interne. Les fonctions erand48(), nrand48() et jrand48() necessitent que le programme appelant fournisse un emplacement de stockage pour les valeurs successives de Xi. Cet emplacement est le tableau correspondant a l'argument xsubi. Ces fonctions sont initialisees en placant la valeur initiale de Xi dans le tableau avant le premier appel de la fonction. La fonction d'initialisation srand48() definit les 32 bits de poids fort de Xi avec l'argument valeur_graine. Les 16 bits de poids faible sont initialises avec la valeur arbitraire 0x330E. La fonction d'initialisation seed48() definit la valeur de Xi avec la valeur sur 48 bits specifiee dans l'argument seed16v. La valeur precedente de Xi est copiee dans un tampon interne et un pointeur vers ce tampon est renvoye par seed48(). La fonction d'initialisation lcong48() permet a l'utilisateur de definir des valeurs initiales de Xi, a et c. Dans le tableau param, les elements param[0-2] specifient Xi, param[3-5] specifient a et param[6] specifie c. Apres un appel a lcong48(), un appel ulterieur a srand48() ou a seed48() retablira les valeurs normales de a et c. ATTRIBUTS Pour une explication des termes utilises dans cette section, consulter attributes(7). +----------------------------+--------------------------+--------------+ |Interface | Attribut | Valeur | +----------------------------+--------------------------+--------------+ |drand48(), erand48(), | Securite des threads | MT-Unsafe | |lrand48(), nrand48(), | | race:drand48 | |mrand48(), jrand48(), | | | |srand48(), seed48(), | | | |lcong48() | | | +----------------------------+--------------------------+--------------+ Les fonctions ci-dessus enregistrent globalement l'etat du generateur de nombre aleatoire. Elles ne sont donc pas sures dans un contexte multithread. STANDARDS POSIX.1-2008. HISTORIQUE POSIX.1-2001, SVr4. VOIR AUSSI rand(3), random(3) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Lucien Gentis Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 drand48(3)