Generarea de numere aleatorii în Java

Generarea unei serii de numere aleatorii este una dintre acele sarcini comune care se recurg din când în când. În Java, poate fi obținut prin utilizarea java.util. Clasa aleatorie.

Primul pas, ca și în cazul utilizării oricărui API clasă, este de a pune declarația 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 intervalul de valori (negative și pozitive) ale tipurilor de date int și lungi, respectiv:

Numerele returnate vor fi alese aleatoriu valori int și lungi:

Alegerea numerelor aleatorii dintr-un anumit interval

Î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:

instagram viewer

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ă:

  • minus numărul de pornire de la numărul limită superioară și apoi adăugați unul.
  • adăugați numărul de pornire la rezultatul metodei nextInt ().

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:

Cat de intamplator este clasa aleatorie?

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 aceea Neil Armstrong a pășit prima dată pe Lună ca număr al seminței mele (20 iulie 1969):

Indiferent cine rulează acest cod, secvența de numere „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, aceasta 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 unde trebuie doar să existe un anumit element aleatoriu (de exemplu, zaruri pentru un joc de masă), atunci funcționează bine.