Generarea unui număr aleator într-un anumit interval

Generarea unui număr aleator într-un anumit interval

Bună ziua pe partea cealaltă a ecranului.

Oricare dintre noi, mai devreme sau mai târziu, se întâlnește cu necesitatea de a genera un număr aleator într-un anumit interval, indiferent dacă este real sau întreg.







Pentru ce? De fapt, nu contează, poate fi o funcție pentru a calcula șansa de a declanșa un eveniment, a obține un multiplicator aleator sau orice altul.

Deci, pentru ceea ce este necesar să înțelegeți, și anume pentru orice :)

De fapt, există o mulțime de metode pentru obținerea unui număr de pseudorandom, dar voi da un exemplu cu clasa Math. și anume cu metoda random ();

Ce avem?
Apelarea metodei Math.random () returnează un număr real pseudo-aleator (dublu) din intervalul [0; 1). adică de la 0 la 1 excluzând 1, astfel încât numărul maxim în intervalul este 0.99999999999.

Ei bine, avem un număr pseudo-aleator, dar dacă avem nevoie de gama noastră proprie?
De exemplu, avem nevoie de un număr pseudo-aleator din intervalul [0; 100)?

Sa dovedit că nu este rău, dar maxim (în cazul nostru), încă nu vom ajunge.






Pentru a obține un număr aleatoriu în intervalul [0; 100], trebuie să adăugăm la maximul nostru 1 și apoi să convertim la un intreg de tip int sau long (în funcție de intervalele pe care le veți utiliza).


Notă: După cum puteți vedea, variabila max a fost incrementată de formularul prefix. (Dacă nu știți că sfătuiesc să citesc articolul meu)

Excelent, am obținut ceea ce ne-am dorit, dar dacă avem nevoie de o gamă nu de la 0, ci de exemplu [10, 75]


Analiza codului din metoda rnd:
Numărul minim de intervale = 10;
Numărul maxim al intervalului este de 75;
max - = min; // Se scade valoarea minimă din valoarea maximă pentru a obține multiplicatorul numărului real pseudo-aleator.
Numărul maxim după calcul este de 65

Un număr real pseudo-aleator (de exemplu) este 0.18283417347179454 (primit de la apelul Math .random ())
Numărul maxim înainte de multiplicare a fost incrementat de formularul de prefix.
Numărul maxim este acum 66

Înmulțim 0.18283417347179454 cu 66
Rezultatul de multiplicare este 12.06705544913844
Conversia rezultatului multiplicării numărului maxim printr-un număr real pseudo-aleator la tipul întregului int
Adăugăm numărul minim la rezultatul transformat care este egal cu 12
Returnați rezultatul: 22

După cum se poate observa din analiza, chiar dacă numărul real de pseudo-aleatoriu este zero, atunci vom returna cel nostru, ca urmare a adăugării de numărul nostru minim cu rezultatul înmulțirii.

Sper că pentru tine a fost util și informativ.

Succes în mastering Java;)







Articole similare

Trimiteți-le prietenilor: