NOM
drand48, erand48, lrand48, nrand48, mrand48, jrand48, srand48, seed48,
lcong48 - Générer de nombres pseudo-aléatoires uniformément distribués
SYNOPSIS
#include <stdlib.h>
double drand48(void);
double erand48(unsigned short xsubi[3]);
long int lrand48(void);
long int nrand48(unsigned short xsubi[3]);
long int mrand48(void);
long int jrand48(unsigned short xsubi[3]);
void srand48(long int seedval);
unsigned short *seed48(unsigned short seed16v[3]);
void lcong48(unsigned short param[7]);
Exigences de macros de test de fonctionnalités pour la glibc (voir
feature_test_macros(7)) :
Pour toutes les fonctions ci-dessus : _SVID_SOURCE || _XOPEN_SOURCE
Ces fonctions génèrent des nombres pseudo-alé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 entre 0 et 2^31.
Les fonctions mrand48() et jrand48() renvoient des entiers longs
signés, uniformément distribués entre -2^31 et 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. Tant que lcong48() n’est pas appelé, 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
les 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 forts de Xi, et convertit 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.
La fonction d’initialisation srand48() définit les 32 bits de poids
fort de Xi avec l’argument seedval. Les 16 bits de poids faibles sont
initialisés avec la valeur arbitraire 0x330E.
La fonction d’initialisation seed48() définit la valeur de Xi comme la
valeur spécifiée dans le tableau seed16v. La précédente valeur 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. Les éléments param[0-2] du
tableau 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.
CONFORMITÉ
SVr4, POSIX.1-2001.
NOTES
Ces fonctions sont déclarées obsolètes par SVID 3, qui indique que
rand(3) devrait être utilisée à la place.
VOIR AUSSI
rand(3), random(3)
COLOPHON
Cette page fait partie de la publication 3.23 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent être trouvées à l’adresse
http://www.kernel.org/doc/man-pages/.
TRADUCTION
Cette page de manuel a été traduite et mise à jour par Christophe
Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
disposition sur http://manpagesfr.free.fr/.
Les mises à jour et corrections de la version présente dans Debian sont
directement gérées par Florentin Duneau <fduneau@gmail.com> et l’équipe
francophone de traduction de Debian.
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande « man -L C <section> <page_de_man> ».
26 juillet 2007