RANDOM_R(3)

NOM
random_r, srandom_r, initstate_r, setstate_r - Générateur de nombres aléatoires réentrant

SYNOPSIS
#include <stdlib.h>

int random_r(struct random_data *buf, int32_t *result);
int srandom_r(unsigned int seed, struct random_data *buf);
int initstate_r(unsigned int seed, char *statebuf,
                size_t statelen, struct random_data *buf);
int setstate_r(char *statebuf, struct random_data *buf);

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

random_r(), srandom_r(), initstate_r(), setstate_r(): _SVID_SOURCE || _BSD_SOURCE

DESCRIPTION
Ces fonctions sont les équivalents réentrants des fonctions décrites dans random(3). Elles sont appropriées à l'utilisation dans des programmes multithreadés où chaque thread doit pouvoir obtenir une séquence indépendante et reproductible de nombres aléatoires. La fonction random_r() est identique à random(3), excepté qu'au lieu d'utiliser l'information d'état maintenue dans une variable globale, elle utilise l'information d'état située dans l'argument pointé par buf. Le nombre aléatoire généré est renvoyé dans l'argument result. La fonction srandom_r() est identique à srandom(3), excepté qu'elle initialise la graine du générateur de nombre aléatoire dont l'état est maintenu dans l'objet pointé par buf, au lieu de la graine associée à la variable d'état globale. La fonction initstate_r() est identique à initstate(3) excepté qu'elle initialise l'état dans l'objet pointé par buf, plutôt que d'initialiser la variable d'état globale. La fonction setstate_r() est identique à setstate(3) excepté qu'elle modifie l'état dans l'objet pointé par buf, plutôt que de modifier la variable d'état globale.

VALEUR RENVOYÉE
Toutes ces fonctions renvoient 0 si elles réussissent ou -1 si elles échouent.

ERREURS

EINVAL
    Une table d'états de moins de 8 octets a été fournie à initstate_r().

EINVAL
    L'argument statebuf ou buf de setstate_r() était NULL.

EINVAL
    L'argument buf ou result de random_r() était NULL.

CONFORMITÉ
Ces fonctions sont des extensions glibc non standard.

VOIR AUSSI
drand48(3), rand(3), random(3)

TRADUCTION
Ce document est une traduction réalisée par Alain Portal <aportal AT univ-montp2 DOT fr> le 6 juin 2008 et révisée le 17 juillet 2008.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 3 random_r ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.