< Navigare > Acasa > IT, Programare, Tutoriale > Articol: Generare aleatoare de numere in C

| RSS

Generare aleatoare de numere in C

19 October 2009, 23:19 | 1 Comentariu | Scris in IT, Programare, Tutoriale
Scris de Valentin Popescu

Am avut nevoie de generare aleatoare de numere in C sub Ubuntu si nu am stiut cum se face asa ca m-am documentat putin si cum nu am gasit niciun site romanesc in care sa fie explicat, m-am gandit ca ar fi bine sa explic eu.

Numerele aleatoare sunt folosite de obicei pentru a genera evenimente aleator, ca de exemplu in jocurile de noroc, experimente, s.a.m.d. In practica nu exista o functie care sa genereze date aleator, defapt se generaza numere pseudo-aleatoare. Deci se va folosi o formula pentru a genera aceste numere, iar secventele de numere se pot repeta. Pentru a putea face acest lucru, trebuie setat o “sursa” (seed) de unde sa se plece cu generarea secventelor asa ca, setand mereu acelasi seed vom avea mereu aceeasi secventa.

Una dintre cele mai la indemana solutii pentru a seta o “sursa”(seed) este aceea de a folosi ora si data curenta a sistemului (pentru ca aceastea se schimba continuu). Exista multe functii care genereaza secvente pseudo-aleator insa toate functioneaza dupa aceleasi principii.

Cea mai simpla este:

void srand(unsigned seed);
rand();

Unde

void srand(unsigned seed);

este declaratia functiei care seteaza “sursa”.
Ea va fi apelata astfel:

srand(time(NULL));

Iar

rand();

va genera numarul aleator de la 0 la 215-1.
Pentru a fi cat mai usor de inteles, am sa ilustrez modul in care aceste functii pot fi folosite intr-un mic program.

#include 
#include 
#include  //includem time.h pentru a putea folosi functia time();
void srand (unsigned seed);
int main(void)
{
	int a;
	srand(time(NULL)); //setare "sursa"(seed)
	a = rand(); //genereaza continut aleator
	printf("\nNumarul generat aleator este: %d \n", a);
	return 0;
}

Pentru a genera si numere negative puteti folosi una din functiile:

mrand48();
//sau
jrand48();

care genereaza numere intre -231 si 231.
La final, daca ati compilat programul, ati putut observa ca numerele generate sunt destul de mari. Pentru a limita superior generarea acestora folositi:

a = rand()%n;

unde n este valoarea maxima (fara ea) pana la care se vor genera numere.

Articole asemanatoare

  • Fara articole asemanatoare
Lasa un comentariu 2981 vizualizari, 2 azi |
Urmareste discutiile

1 raspuns la “Generare aleatoare de numere in C”

  1. Ilincu:

    Bun, corect, bine de stiut

Lasa un comentariu