Generarea unei serii de numere aleatorii este una dintre acele sarcini comune care se extind din când în când. În Java, se poate realiza simplu folosind clasa java.util.Random.
Primul pas, ca și în cazul oricărei clase API, este să puneți instrucțiunea de import înainte de începerea clasei de program:
Apoi, creați un obiect aleatoriu:
Obiectul Random vă oferă un generator simplu de numere aleatorii. Metodele obiectului dau posibilitatea de a alege numere aleatorii. De exemplu, metodele nextInt () și nextLong () vor returna un număr care se încadrează în gama de valori (negative și pozitive) ale tipurilor de date int și lungi, respectiv:
Numerele returnate vor fi alese aleatoriu valori int și lungi:
În mod normal, numerele aleatoare care trebuie generate trebuie să fie dintr-un anumit interval (de exemplu, între 1 până la 40 inclusiv). În acest scop, metoda nextInt () poate accepta și un parametru int. Aceasta indică limita superioară a intervalului de numere. Cu toate acestea, numărul limită superioară nu este inclus ca unul dintre numerele care pot fi selectate. Acest lucru poate părea confuz, dar metoda nextInt () funcționează de la zero în sus. De exemplu:
va alege doar un număr aleatoriu de la 0 la 39 inclusiv. Pentru a alege dintr-un interval care începe cu 1, trebuie doar să adăugați 1 la rezultatul metodei nextInt (). De exemplu, pentru a alege un număr între 1 până la 40, adăugați inclusiv unul la rezultat:
Dacă intervalul pornește de la un număr mai mare decât unul, va trebui să:
De exemplu, pentru a alege un număr de la 5 la 35 inclusiv, numărul limită superioară va fi de 35-5 + 1 = 31, iar la rezultat trebuie adăugate 5:
Ar trebui să subliniez că clasa Random generează numere aleatorii într-un mod determinist. Algoritmul care produce aleatoriu se bazează pe un număr numit sămânță. Dacă numărul de semințe este cunoscut, atunci este posibil să ne dăm seama de numerele care vor fi produse din algoritm. Pentru a demonstra acest lucru, voi folosi numerele de la data când Neil Armstrong a pășit prima dată pe Lună ca număr al seminței mele (20 iulie 1969):
Indiferent cine rulează acest cod, succesiunea numerelor „aleatorii” produse va fi:
În mod implicit, numărul de semințe care este utilizat de:
este ora curentă în milisecunde de la 1 ianuarie 1970. În mod normal, acest lucru va produce numere suficient de aleatoare pentru majoritatea scopurilor. Cu toate acestea, rețineți că doi generatori de numere aleatoare create în aceeași milisecundă vor genera aceleași numere aleatorii.
De asemenea, aveți grijă când utilizați clasa Random pentru orice aplicație care trebuie să aibă un generator de numere aleatorii sigure (de exemplu, un program de jocuri de noroc). Poate fi posibilă ghicirea numărului de semințe în funcție de timpul de execuție al aplicației. În general, pentru aplicațiile în care numerele aleatorii sunt absolut critice, cel mai bine este să găsiți o alternativă la obiectul Random. Pentru majoritatea aplicațiilor în care trebuie doar să existe un anumit element aleatoriu (de exemplu, zaruri pentru un joc de masă), atunci funcționează bine.