Răspuns :
Ok, deci pentru generarea unui număr aleatoriu în C++ se folosește funcția rand() din librăria <cstdlib> sau <stdlib.h>. Această funcție pur și simplu returnează un număr între 0 și câteva zeci de mii, sau chiar mai mare în unele cazuri. (În caz de nevoie, valoarea maximă se poate afla din constanta RAND_MAX.)
Ok, acum vine partea să scoatem doar dintr-un anumit interval acele numere. Ca să nu fie prea greu, să zicem că trebuie un număr aleatoriu între 0 și x.
Dacă ne gândim, am putea deduce că o metodă ar fi să transformăm acel rand generat într-un număr procentual (între 0 și 1), să înmulțim cu x, și să luăm întregul.
Ceva de genul:
float proc = (float) rand() / RAND_MAX;
int nr = proc * x;
Și am avea în nr un număr între 0 și x.
Dar există o metodă și mai simplă, cu modulo:
int nr = rand() % x; (eventual (x+1), dacă vrem să includem și x)
Ok, acum, ca să generăm un număr între a și b:
e exact același lucru, doar că o să calculăm un x (care ar fi diferența dintre cele 2), apoi îi adunăm a, ca să poziționăm intervalul între a și b.
Deci:
x = b-a;
nr = a + ( rand() % (x+1) );
Același raționament se aplică și de la -a la b. Se calculează „distanța” de la unul la celălalt și se generează un număr între 0 și această „distanță”. Apoi se poziționează la începutul intervalului (la -a [sau la a, la cerința cu a, b]).
Ok, acum vine partea să scoatem doar dintr-un anumit interval acele numere. Ca să nu fie prea greu, să zicem că trebuie un număr aleatoriu între 0 și x.
Dacă ne gândim, am putea deduce că o metodă ar fi să transformăm acel rand generat într-un număr procentual (între 0 și 1), să înmulțim cu x, și să luăm întregul.
Ceva de genul:
float proc = (float) rand() / RAND_MAX;
int nr = proc * x;
Și am avea în nr un număr între 0 și x.
Dar există o metodă și mai simplă, cu modulo:
int nr = rand() % x; (eventual (x+1), dacă vrem să includem și x)
Ok, acum, ca să generăm un număr între a și b:
e exact același lucru, doar că o să calculăm un x (care ar fi diferența dintre cele 2), apoi îi adunăm a, ca să poziționăm intervalul între a și b.
Deci:
x = b-a;
nr = a + ( rand() % (x+1) );
Același raționament se aplică și de la -a la b. Se calculează „distanța” de la unul la celălalt și se generează un număr între 0 și această „distanță”. Apoi se poziționează la începutul intervalului (la -a [sau la a, la cerința cu a, b]).
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile disponibile v-au fost utile și inspiraționale. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, suntem aici pentru a vă ajuta. Ne face plăcere să vă revedem și vă invităm să adăugați site-ul nostru la favorite pentru acces rapid!