- scrise de echipa Academiei Vertex. Sperăm că va fi util pentru dvs. Citește plăcut!
- acesta este unul dintre articolele din "Tutorialul nostru Java"
Generarea numerelor aleatoare în Java este un subiect important și necesar. Într-adevăr, veți avea nevoie de nenumărate ori.
- când matricea este umplută cu numere aleatorii
- când amestecați o punte de cărți
- atunci când selectați un element aleator din secvență
- și așa mai departe.
Să abordăm acest subiect.
Există mai multe moduri de a genera un număr aleatoriu. În acest articol, vom analiza generarea de numere folosind Math.random ()
În biblioteca de clase Java, există un pachet java.lang care are o clasă Math, iar clasa Math are o metodă random (). Vedeți imaginea de mai jos pentru ajutor.
Deci, de fiecare dată când se numește Math.random (), se generează un număr aleator folosind un algoritm special (cu o instrucțiune specifică). Este posibil să se prevadă ce număr va fi generat? Teoretic, acest lucru este posibil, dar este foarte dificil de făcut. Și întrucât există încă o mică probabilitate de a prezice care număr va fi generat de algoritm, astfel de numere sunt numite nu aleatoare, ci pseudo-aleatoare.
Ar trebui să știți 3 lucruri:
1. În mod implicit, Math.random () generează numere reale aleatorii din intervalul [0; 1), adică de la zero la 1 inclusiv.
„Până la 1 numai“ - aceasta înseamnă că math.random () nu poate genera numărul 1. E 0999 - adică, orice număr de mai puțin 1.Poprobuyte rula acest cod de aici și a vedea pentru tine pe computer care consola va fi afișată reală numere de la 0 la orice număr, mai puțin de 1.
Pasul 1: Intervalul [0; 1) este înmulțit cu 3. În consecință,
Limita inferioară: 0 * 3 = 0
Limită superioară: 1 * 3 = 3
Am obținut intervalul [0; 3). Consola după numărul 3 este rotundă. Aceasta înseamnă că 3 nu este în intervalul, adică numărul maxim care poate fi generat în acest interval este de 2.999. Într-un cuvânt - avem de-a face cu numere reale (fractionale).
Pasul 2: Prin urmare, aplicați (int) înainte de Math.random () * 3. Partea fracționată este tăiată și obținem intervalul [0; 2]
Dacă luăm în considerare formula noastră, nu se va schimba prea mult.
În cazul unui număr real, iar intervalul superior include b - [a; b]:
(Math.random () * (b - a + 1) + a
Dacă sunt numai numere întregi:
(int) ((Math.random () * (b - a + 1) + a)
Dacă este necesar să se genereze un număr din intervalul [3; 4]. Rețineți că după 4 brațul este pătrat. Aceasta înseamnă că suntem interesați de faptul că gama include numărul 4. Cum să faceți acest lucru? Aici:
Numărul pasului 1: Intervalul [0; 1) este înmulțit cu 2. În consecință,
Limita inferioară: 0 * 2 = 0
Limită superioară: 1 * 2 = 2
Am obținut intervalul [0; 2). Consola după numărul 2 este rotundă. Aceasta înseamnă că 2 nu este în intervalul, adică numărul maxim care poate fi generat în acest interval este de 1.999. Și asta înseamnă că avem de-a face cu un număr real (fracțional).
Pasul 2: Prin urmare, aplicați (int) înainte de Math.random () * 2. Partea fracționată este tăiată și obținem intervalul [0; 1]. Rețineți - intervalul este deja în numărul 1 inclusiv.
Pasul 3: Apoi adăugăm 3 la intervalul [0; 1] În consecință,
Limita inferioară: 0 + 3 = 3
Limita superioară: 1 + 3 = 4
Au primit o nouă gamă [3; 4]
(int) (Math.random () * (4 - 3 + 1) + 3) => (int)
O valoare întregă în intervalul [-100; +100] (100 inclusiv):