.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" References consulted: .\" Linux libc source code .\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) .\" 386BSD man pages .\" .\" Modified 1993-03-29, David Metcalfe .\" Modified 1993-04-28, Lars Wirzenius .\" Modified 1993-07-24, Rik Faith (faith@cs.unc.edu) .\" Modified 1995-05-18, Rik Faith (faith@cs.unc.edu) to add .\" better discussion of problems with rand on other systems. .\" (Thanks to Esa Hyyti{ (ehyytia@snakemail.hut.fi).) .\" Modified 1998-04-10, Nicolás Lichtmaier .\" with contribution from Francesco Potorti .\" Modified 2003-11-15, aeb, added rand_r .\" 2010-09-13, mtk, added example program .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH rand 3 "20 iulie 2023" "Pagini de manual de Linux 6.05.01" .SH NUME rand, rand_r, srand \- generator de numere pseudo\-aleatorii .SH BIBLIOTECA Biblioteca C standard (\fIlibc\fP, \fI\-lc\fP) .SH REZUMAT .nf \fB#include \fP .PP \fBint rand(void);\fP \fBvoid srand(unsigned int \fP\fIseed\fP\fB);\fP .PP \fB[[depreciat]] int rand_r(unsigned int *\fP\fIseedp\fP\fB);\fP .fi .PP .RS -4 Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați \fBfeature_test_macros\fP(7)): .RE .PP \fBrand_r\fP(): .nf Începând cu glibc 2.24: _POSIX_C_SOURCE >= 199506L glibc 2.23 și versiunile anterioare: _POSIX_C_SOURCE .fi .SH DESCRIERE Funcția \fBrand\fP() returnează un număr întreg pseudo\-aleatoriu în intervalul de la 0 la \fBRAND_MAX\fP inclusiv (adică intervalul matematic [0,\ \fBRAND_MAX\fP]). .PP Funcția \fBsrand\fP() stabilește argumentul său ca sămânță pentru o nouă secvență de numere întregi pseudo\-aleatorii care va fi returnată de \fBrand\fP(). Aceste secvențe pot fi repetate prin apelarea \fBsrand\fP() cu aceeași valoare de sămânță. .PP În cazul în care nu este furnizată nicio valoare de sămânță, funcția \fBrand\fP() este alimentată automat cu o valoare de 1. .PP Funcția \fBrand\fP() nu este reentrantă, deoarece utilizează o stare ascunsă care este modificată la fiecare apel. Aceasta ar putea fi doar valoarea inițială care va fi utilizată de următorul apel sau ar putea fi ceva mai elaborat. Pentru a obține un comportament reproductibil într\-o aplicație cu fire de execuție, această stare trebuie să fie explicită; acest lucru poate fi realizat cu ajutorul funcției reentrante \fBrand_r\fP(). .PP Ca și \fBrand\fP(), \fBrand_r\fP() returnează un număr întreg pseudo\-aleatoriu în intervalul [0,\ \fBRAND_MAX\fP]. Argumentul \fIseedp\fP este un indicator către un \fIunsigned int\fP care este utilizat pentru a stoca starea între apeluri. Dacă \fBrand_r\fP() este apelat cu aceeași valoare inițială pentru numărul întreg indicat de \fIseedp\fP, iar această valoare nu este modificată între apeluri, atunci va rezulta aceeași secvență pseudo\-aleatorie. .PP Valoarea indicată de argumentul \fIseedp\fP din \fBrand_r\fP() oferă doar o cantitate foarte mică de stare, astfel încât această funcție va fi un generator pseudo\-aleatoriu slab. Încercați în schimb \fBdrand48_r\fP(3). .SH "VALOAREA RETURNATĂ" Funcțiile \fBrand\fP() și \fBrand_r\fP() returnează o valoare cuprinsă între 0 și \fBRAND_MAX\fP (inclusiv). Funcția \fBsrand\fP() nu returnează nicio valoare. .SH ATRIBUTE Pentru o explicație a termenilor folosiți în această secțiune, a se vedea \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interfață Atribut Valoare T{ .na .nh \fBrand\fP(), \fBrand_r\fP(), \fBsrand\fP() T} Siguranța firelor MT\-Safe .TE .sp 1 .SH VERSIUNI Versiunile de \fBrand\fP() și \fBsrand\fP() din biblioteca Linux C utilizează același generator de numere aleatoare ca și \fBrandom\fP(3) și \fBsrandom\fP(3), astfel încât biții de ordin inferior ar trebui să fie la fel de aleatori ca și cei de ordin superior. Cu toate acestea, în implementările mai vechi ale \fBrand\fP() și în implementările actuale pe diferite sisteme, biții de ordin inferior sunt mult mai puțin aleatori decât cei de ordin superior. Nu utilizați această funcție în aplicații destinate să fie portabile atunci când este necesar un bun caracter aleatoriu; (utilizați în schimb \fBrandom\fP(3).) .SH STANDARDE .TP \fBrand\fP() .TQ \fBsrand\fP() C11, POSIX.1\-2008. .TP \fBrand_r\fP() POSIX.1\-2008. .SH ISTORIC .TP \fBrand\fP() .TQ \fBsrand\fP() SVr4, 4.3BSD, C89, POSIX.1\-2001. .TP \fBrand_r\fP() POSIX.1\-2001. Obsoletă în POSIX.1\-2008. .SH EXEMPLE POSIX.1\-2001 oferă următorul exemplu de implementare a \fBrand\fP() și \fBsrand\fP(), posibil util atunci când este nevoie de aceeași secvență pe două mașini diferite. .PP .in +4n .EX static unsigned long next = 1; \& /* RAND_MAX se presupune a fi 32767 */ int myrand(void) { next = next * 1103515245 + 12345; return((unsigned)(next/65536) % 32768); } \& void mysrand(unsigned int seed) { next = seed; } .EE .in .PP Următorul program poate fi utilizat pentru a afișa secvența pseudo\-aleatoare produsă de \fBrand\fP() atunci când i se dă o anumită sămânță. Atunci când sămânța este \fI\-1\fP, programul utilizează o sămânță aleatoare. .PP .in +4n .\" SRC BEGIN (rand.c) .EX #include #include \& int main(int argc, char *argv[]) { int r; unsigned int seed, nloops; \& if (argc != 3) { fprintf(stderr, "Utilizare: %s \en", argv[0]); exit(EXIT_FAILURE); } \& seed = atoi(argv[1]); nloops = atoi(argv[2]); \& if (seed == \-1) { seed = arc4random(); printf("sămânța: %u\en", seed); } \& srand(seed); for (unsigned int j = 0; j < nloops; j++) { r = rand(); printf("%d\en", r); } \& exit(EXIT_SUCCESS); } .EE .\" SRC END .in .SH "CONSULTAȚI ȘI" \fBdrand48\fP(3), \fBrandom\fP(3) .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .