Generiranje slučajnih brojeva u Javi

click fraud protection

Stvaranje niza od slučajni brojevi jedan je od onih uobičajenih zadataka koji se povremeno pojavljuju. U Java, to se može postići jednostavnim korištenjem java.util. Slučajna klasa.

Prvi korak, kao i kod upotrebe bilo kojeg API-ja klasa, je da stavku uvoza stavite prije početka svoje programske klase:

Zatim stvorite slučajni objekt:

Objekt Random pruža vam jednostavan generator slučajnih brojeva. Metode objekta daju mogućnost odabira slučajnih brojeva. Na primjer, metode nextInt () i nextLong () vratit će broj koji je unutar raspona vrijednosti (negativne i pozitivne) int i dugih podataka podataka:

Vraćeni brojevi bit će nasumično odabrani int i duge vrijednosti:

Biranje slučajnih brojeva iz određenog raspona

Normalno da se slučajni brojevi generiraju iz određenog raspona (npr., Između 1 i 40 uključivo). U tu svrhu, metoda nextInt () također može prihvatiti int parametar. Označava gornju granicu za raspon brojeva. Međutim, gornji granični broj nije uključen kao jedan od brojeva koji se mogu odabrati. To možda zvuči zbunjujuće, ali metoda nextInt () djeluje od nule prema gore. Na primjer:

instagram viewer

će odabrati samo slučajni broj od 0 do 39 uključivo. Da biste odabrali raspon koji počinje s 1, jednostavno dodajte 1 u rezultat metode nextInt (). Na primjer, za odabir broja između 1 i 40 uključivo dodajte jedan u rezultat:

Ako se raspon kreće od većeg broja od jednog, trebate:

  • minus početni broj od gornjeg ograničenog broja, a zatim dodajte jedan.
  • dodajte početni broj rezultatu metode nextInt ().

Na primjer, da biste odabrali broj od 5 do uključivo 35, gornji granični broj će biti 35-5 + 1 = 31, a rezultatu treba dodati 5:

Koliko je slučajna klasa?

Moram istaknuti da klasa Random generira slučajne brojeve na determinirani način. Algoritam koji proizvodi slučajnost zasnovan je na broju nazvanom sjeme. Ako je poznat broj sjemena, tada je moguće utvrditi brojeve koji će se proizvesti iz algoritma. Da bih to dokazao, upotrijebit ću brojeve od datuma koji Neil Armstrong prvi je stupio na Mjesec kao moj broj sjemena (20. srpnja 1969.):

Bez obzira tko pokreće ovaj kod, slijed proizvedenih "slučajnih" brojeva bit će:

Broj sjemena prema zadanom koristi:

je trenutno vrijeme u milisekundama od 1. siječnja 1970. godine. Normalno, to će proizvesti dovoljno slučajne brojeve za većinu svrha. No, imajte na umu da će dva generatora slučajnih brojeva stvorena unutar iste milisekunde generirati iste slučajne brojeve.

Također budite oprezni kada koristite klasu Random za bilo koju aplikaciju koja mora imati siguran generator slučajnih brojeva (npr. Program za kockanje). Možda će biti moguće pogoditi broj sjemena na temelju vremena pokretanja aplikacije. Općenito, za aplikacije u kojima su slučajni brojevi apsolutno kritični, najbolje je pronaći alternativu predmetu Random. Za većinu aplikacija u kojima samo treba postojati određeni slučajni element (npr. Kockice za igru ​​na ploči) tada to funkcionira u redu.

instagram story viewer