Nejaušu skaitļu ģenerēšana Java

Ģenerējot virkni izlases skaitļi ir viens no tiem kopīgajiem uzdevumiem, kas laiku pa laikam attīstās. Iekšā Java, to var sasniegt, vienkārši izmantojot java.util. Nejaušā klase.

Pirmais solis, tāpat kā jebkura API izmantošana klase, ir jāievieto importa paziņojums pirms savas programmas klases sākuma:

Pēc tam izveidojiet izlases objektu:

Objekts Random nodrošina jūs ar vienkāršu izlases numuru ģeneratoru. Objekta metodes dod iespēju izvēlēties nejaušus skaitļus. Piemēram, nextInt () un nextLong () metodes atgriezīs skaitli, kas ir attiecīgi int un garo datu tipu vērtību diapazonā (negatīvā un pozitīvā):

Atdotie skaitļi tiks izvēlēti pēc nejaušības principa un lielās vērtības:

Nejaušu skaitļu atlasīšana no noteikta diapazona

Parasti ģenerējamiem nejaušiem skaitļiem jābūt noteiktā diapazonā (piemēram, no 1 līdz 40 ieskaitot). Šim nolūkam nextInt () metode var pieņemt arī int parametru. Tas apzīmē numuru diapazona augšējo robežu. Tomēr augšējā robežas numurs nav iekļauts kā viens no numuriem, ko var izvēlēties. Tas varētu likties mulsinoši, bet nextInt () metode darbojas no nulles uz augšu. Piemēram:

instagram viewer

izvēlēsies tikai izlases numuru no 0 līdz 39 ieskaitot. Lai izvēlētos no diapazona, kas sākas ar 1, nextInt () metodes rezultātam vienkārši pievienojiet 1. Piemēram, lai izvēlētos skaitli no 1 līdz 40 (ieskaitot), rezultātam pievienojiet vienu:

Ja diapazons sākas ar lielāku skaitli nekā viens, jums būs jāveic šādas darbības:

  • mīnus sākuma skaitlis no augšējā robežas numura un pēc tam to pievieno.
  • nākamās () metodes rezultātam pievienojiet sākuma numuru.

Piemēram, lai izvēlētos skaitli no 5 līdz 35 (ieskaitot), augšējā robežas numurs būs 35-5 + 1 = 31, un rezultātam jāpievieno 5:

Cik nejauša ir izlases klase?

Jāuzsver, ka nejaušības klase ģenerē nejaušus skaitļus deterministiskā veidā. Algoritms, kas rada nejaušības, ir balstīts uz skaitli, ko sauc par sēklu. Ja sēklu skaits ir zināms, tad no algoritma ir iespējams izdomāt skaitļus, kas tiks ražoti. Lai to pierādītu, es izmantošu skaitļus no datuma, kurā Nīls Ārmstrongs pirmo reizi uzkāpa uz Mēness kā mans sēklu numurs (1969. gada 20. jūlijs):

Neatkarīgi no tā, kurš vada šo kodu, izveidoto “nejaušo” skaitļu secība būs šāda:

Pēc noklusējuma sēklu skaits, ko izmanto:

ir pašreizējais laiks milisekundēs kopš 1970. gada 1. janvāra. Parasti lielākai daļai tas rada pietiekami nejaušus skaitļus. Tomēr ņemiet vērā, ka divi izlases numuru ģeneratori, kas izveidoti tajā pašā milisekundē, ģenerēs tos pašus izlases numurus.

Esiet arī piesardzīgs, lietojot izlases klasi jebkurai lietojumprogrammai, kurai jābūt drošam nejaušu skaitļu ģeneratoram (piemēram, azartspēļu programmai). Var būt iespējams uzminēt sēklu skaitu, pamatojoties uz lietojumprogrammas darbības laiku. Parasti lietojumprogrammām, kur nejaušie skaitļi ir absolūti kritiski, vislabāk ir atrast alternatīvu objektam Nejaušs. Lielākajai daļai lietojumprogrammu, kur vienkārši nepieciešams noteikts izlases elements (piemēram, galda spēles kauliņi), tas darbojas labi.

instagram story viewer