Provided by: manpages-ro-dev_4.21.0-2_all bug

NUME

       random_r, srandom_r, initstate_r, setstate_r - generator de numere aleatoare reentrante

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

REZUMAT

       #include <stdlib.h>

       int random_r(struct random_data *restrict buf,
                    int32_t *restrict result);
       int srandom_r(unsigned int seed, struct random_data *buf);

       int initstate_r(unsigned int seed, char statebuf[restrict .statelen],
                    size_t statelen, struct random_data *restrict buf);
       int setstate_r(char *restrict statebuf,
                    struct random_data *restrict buf);

   Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)):

       random_r(), srandom_r(), initstate_r(), setstate_r():
           /* glibc >= 2.19: */ _DEFAULT_SOURCE
               || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE

DESCRIERE

       Aceste  funcții  sunt  echivalentele  reentrante  ale funcțiilor descrise în random(3). Ele sunt adecvate
       pentru utilizarea în programe cu mai multe fire de execuție, în care fiecare fir de execuție  trebuie  să
       obțină o secvență independentă și reproductibilă de numere aleatoare.

       Funcția  random_r()  este  ca  și random(3), cu excepția faptului că, în loc să utilizeze informațiile de
       stare păstrate într-o variabilă globală, utilizează informațiile de stare din argumentul indicat de  buf,
       care  trebuie  să fi fost inițializat anterior de initstate_r().  Numărul aleatoriu generat este returnat
       în argumentul result.

       Funcția srandom_r() este la fel ca srandom(3), cu  excepția  faptului  că  inițializează  sămânța  pentru
       generatorul  de numere aleatoare a cărui stare este menținută în obiectul indicat de buf, care trebuie să
       fi fost inițializat în prealabil de initstate_r(), în loc de  sămânța  asociată  cu  variabila  de  stare
       globală.

       Funcția  initstate_r()  este  ca  initstate(3),  cu excepția faptului că inițializează starea în obiectul
       indicat de buf, în loc să inițializeze variabila de stare globală. Înainte de a  apela  această  funcție,
       câmpul  buf.state  trebuie  inițializat  la  NULL.   Funcția  initstate_r() înregistrează un indicator la
       argumentul statebuf în interiorul structurii indicate de buf. Astfel, statebuf nu trebuie să fie eliberat
       atâta timp cât buf este încă în uz; (așadar, statebuf ar trebui să fie alocat de obicei  ca  o  variabilă
       statică sau să fie alocat pe grămadă cu ajutorul malloc(3) sau similar).

       Funcția setstate_r() este ca setstate(3), cu excepția faptului că modifică starea din obiectul indicat de
       buf,  în  loc  să  modifice variabila de stare globală. state trebuie mai întâi să fi fost inițializat cu
       initstate_r() sau să fie rezultatul unui apel anterior al funcției setstate_r().

VALOAREA RETURNATĂ

       Toate aceste funcții returnează 0 în caz de succes.  În  caz  de  eroare,  se  returnează  -1,  cu  errno
       configurată pentru a indica eroarea.

ERORI

       EINVAL O matrice de stare mai mică de 8 octeți a fost specificată la initstate_r().

       EINVAL Argumentul statebuf sau buf la setstate_r() a fost NULL.

       EINVAL Argumentul buf sau result din random_r() a fost NULL.

ATRIBUTE

       Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
       ┌────────────────────────────────────────────────────────────────┬───────────────────┬──────────────────┐
       │ InterfațăAtributValoare          │
       ├────────────────────────────────────────────────────────────────┼───────────────────┼──────────────────┤
       │ random_r(), srandom_r(), initstate_r(), setstate_r()           │ Siguranța firelor │ MT-Safe race:buf │
       └────────────────────────────────────────────────────────────────┴───────────────────┴──────────────────┘

STANDARDE

       Aceste funcții sunt extensii glibc nestandardizate.

ERORI

       Interfața  initstate_r()  este  confuză.  Se  pare  că  tipul  random_data  este  menit  să fie opac, dar
       implementarea cere utilizatorului fie să inițializeze câmpul buf.state la NULL, fie să  elimine  întreaga
       structură înainte de apel.

CONSULTAȚI ȘI

       drand48(3), rand(3), random(3)

TRADUCERE

       Traducerea    în   limba   română   a   acestui   manual   a   fost   creată   de   Remus-Gabriel   Chelu
       <remusgabriel.chelu@disroot.org>

       Această traducere este  documentație  gratuită;  citiți  Licența publică generală GNU Versiunea 3  sau  o
       versiune   ulterioară   cu  privire  la  condiții  privind  drepturile  de  autor.   NU  se  asumă  Nicio
       RESPONSABILITATE.

       Dacă găsiți erori în traducerea acestui manual, vă rugăm să  trimiteți  un  e-mail  la  translation-team-
       ro@lists.sourceforge.net.

Pagini de manual de Linux 6.03                  5 februarie 2023                                     random_r(3)