random(3) Library Functions Manual random(3) NUME random, srandom, initstate, setstate - generator de numere aleatoare BIBLIOTECA Biblioteca C standard (libc, -lc) REZUMAT #include long random(void); void srandom(unsigned int seed); char *initstate(unsigned int seed, char state[.n], size_t n); char *setstate(char *state); Cerine pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultai feature_test_macros(7)): random(), srandom(), initstate(), setstate(): _XOPEN_SOURCE >= 500 || /* glibc >= 2.19: */ _DEFAULT_SOURCE || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE DESCRIERE Funcia random() utilizeaza un generator de numere aleatoare cu reacie aditiva neliniara care utilizeaza un tabel implicit de 31 de numere intregi lungi pentru a returna numere pseudoaleatoare succesive in intervalul 0-2^31 - 1. Perioada acestui generator de numere aleatoare este foarte mare, aproximativ 16 * ((2^31) - 1). Funcia srandom() ii stabilete argumentul ca samana pentru o noua secvena de numere intregi pseudoaleatoare care va fi returnata de random(). Aceste secvene pot fi repetate prin apelarea srandom() cu aceeai valoare de samana. In cazul in care nu se furnizeaza nicio valoare de samana, funcia random() este automat insamanata cu o valoare de 1. Funcia initstate() permite iniializarea unei matrice de stari state pentru a fi utilizata de random(). Dimensiunea matricei de stare n este utilizata de initstate() pentru a decide cat de sofisticat trebuie sa fie generatorul de numere aleatoare pe care trebuie sa-l utilizeze - cu cat matricea de stare este mai mare, cu atat mai bune vor fi numerele aleatoare. Valorile ,,optime" actuale pentru dimensiunea matricei de stari n sunt 8, 32, 64, 128 i 256 de octei; alte valori vor fi rotunjite la cea mai apropiata valoare cunoscuta. Daca se utilizeaza mai puin de 8 octei, se produce o eroare. seed este samana pentru iniializare, care specifica un punct de pornire pentru secvena de numere aleatoare i asigura repornirea in acelai punct. Funcia setstate() modifica matricea de stare utilizata de funcia random(). Matricea de stare state este utilizata pentru generarea numerelor aleatoare pana la urmatorul apel al funciei initstate() sau setstate(). state trebuie mai intai sa fi fost iniializat cu ajutorul initstate() sau sa fie rezultatul unui apel anterior al setstate(). VALOAREA RETURNATA Funcia random() returneaza o valoare intre 0 i (2^31) - 1. Funcia srandom() nu returneaza nicio valoare. Funcia initstate() returneaza un indicator la matricea de stare anterioara. In caz de eec, aceasta returneaza NULL, iar errno este configurata pentru a indica eroarea. In caz de succes, setstate() returneaza un indicator la matricea de stare anterioara. In caz de eec, aceasta returneaza NULL, iar errno este configurata pentru a indica eroarea. ERORI-IEIRE EINVAL Argumentul state dat la setstate() a fost NULL. EINVAL O matrice de stare mai mica de 8 octei a fost specificata la initstate(). ATRIBUTE Pentru o explicaie a termenilor folosii in aceasta seciune, a se vedea attributes(7). +--------------------------------------+---------------------+---------+ |Interfaa | Atribut | Valoare | +--------------------------------------+---------------------+---------+ |random(), srandom(), initstate(), | Sigurana firelor | MT-Safe | |setstate() | | | +--------------------------------------+---------------------+---------+ STANDARDE POSIX.1-2008. ISTORIC POSIX.1-2001, 4.3BSD. NOTE Generarea numerelor aleatoare este un subiect complex. Numerical Recipes in C: The Art of Scientific Computing (William H. Press, Brian P. Flannery, Saul A. Teukolsky, William T. Vetterling; New York: Cambridge University Press, 2007, ed. a 3-a) ofera o discuie excelenta a problemelor practice de generare a numerelor aleatoare in capitolul 7 (Random Numbers). Pentru o discuie mai teoretica, care acopera in profunzime i multe aspecte practice, a se vedea capitolul 3 (Random Numbers) din The Art of Computer Programming Donald E. Knuth's, volumul 2 (Seminumerical Algorithms), 2nd ed.; Reading, Massachusetts: Addison-Wesley Publishing Company, 1981. PRECAUII Funcia random() nu ar trebui utilizata in programele cu mai multe fire de execuie in care este necesar un comportament reproductibil. Folosii random_r(3) in acest scop. ERORI In conformitate cu POSIX, initstate() ar trebui sa returneze NULL in caz de eroare. In implementarea glibc, errno este (aa cum este specificat) stabilita in caz de eroare, dar funcia nu returneaza NULL. CONSULTAI I getrandom(2), drand48(3), rand(3), random_r(3), srand(3) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.06 31 octombrie 2023 random(3)