Ustvarjanje naključnih števil v Javi

Ustvarjanje niza naključna števila je ena tistih pogostih nalog, ki se občasno pojavijo. V Java, je mogoče doseči preprosto z uporabo java.util. Naključni razred.

Prvi korak, kot pri uporabi katerega koli API-ja razred, je, da uvozi stavek pred začetkom programskega razreda:

Nato ustvarite predmet Naključno:

Objekt Random vam omogoča preprost generator naključnih števil. Metode predmeta omogočajo izbiranje naključnih števil. Na primer, metod nextInt () in nextLong () vrneta število, ki je v območju vrednosti (negativne in pozitivne) vrst int in long data:

Vrnjene številke bodo naključno izbrane int in dolge vrednosti:

Izbiranje naključnih števil iz določenega obsega

Običajno morajo biti generirana naključna števila iz določenega obsega (npr. Od 1 do vključno 40). V ta namen lahko metoda nextInt () sprejme tudi int parameter. Označuje zgornjo mejo za obseg števil. Vendar zgornja mejna številka ni vključena kot ena od številk, ki jih je mogoče izbrati. To morda zveni zmedeno, vendar metoda nextInt () deluje od nič navzgor. Na primer:

instagram viewer

bo izbrala samo naključno število od 0 do vključno 39. Če želite izbrati območje, ki se začne z 1, preprosto dodajte 1 v rezultat metode nextInt (). Na primer, če želite izbrati številko med 1 in 40, ki jih v rezultat dodate:

Če se obseg začne z večjim številom od enega, morate:

  • minus začetno številko od zgornje mejne številke in nato dodajte eno.
  • v rezultat metode nextInt () dodajte začetno številko.

Če želite na primer izbrati številko od 5 do vključno 35, bo zgornja mejna številka 35-5 + 1 = 31 in rezultatu je treba dodati 5:

Kako naključen je naključni razred?

Moram poudariti, da razred Random generira naključna števila na determinicen način. Algoritem, ki proizvaja naključnost, temelji na številu, imenovanem seme. Če je število semen znano, je mogoče iz algoritma razbrati številke, ki bodo izdelane. Da dokažem to, bom uporabil številke od datuma, ko je Neil Armstrong prvi stopil na Luno kot moja številka semen (20. julija 1969):

Ne glede na to, kdo izvaja to kodo, bo zaporedje proizvedenih "naključnih" številk:

Številka semena privzeto uporablja:

je trenutni čas v milisekundah od 1. januarja 1970. Običajno bo to ustvarilo dovolj naključnih števil za večino namenov. Upoštevajte pa, da dva generatorja naključnih števil, ustvarjena v isti milisekundi, ustvarijo enaka naključna števila.

Bodite previdni tudi pri uporabi razreda Random za katero koli aplikacijo, ki mora imeti varen generator naključnih števil (npr. Program za igre na srečo). Morda bi bilo mogoče uganiti številko semena glede na čas izvajanja aplikacije. Na splošno je za aplikacije, pri katerih so naključna števila absolutno kritična, najbolje najti alternativo predmetu Random. Za večino aplikacij, kjer mora biti samo določen naključni element (npr. Kocke za družabno igro), potem deluje v redu.

instagram story viewer