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(),           │ Siguranța firelor │ MT-Safe race:buf │
       │setstate_r()                                      │                   │                  │
       └──────────────────────────────────────────────────┴───────────────────┴──────────────────┘

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  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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⟩.