NOM¶
drand48, erand48, lrand48, nrand48, mrand48, jrand48, srand48, seed48, lcong48 -
Générer de nombres pseudoalé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 (consultez
feature_test_macros(7)) :
Pour toutes les fonctions ci-dessus : _SVID_SOURCE || _XOPEN_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 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 :
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.
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.44 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¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
<
http://po4a.alioth.debian.org/> par l'équipe de traduction
francophone au sein du projet perkamon
<
http://perkamon.alioth.debian.org/>.
Christophe Blaess <
http://www.blaess.fr/christophe/> (1996-2003), Alain
Portal <
http://manpagesfr.free.fr/> (2003-2006). Florentin Duneau et
l'équipe francophone de traduction de Debian (2006-2009).
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> ».