Juhuslike numbrite genereerimine Java-s

Genereeritakse seeria juhuslikud numbrid on üks neist tavalistest ülesannetest, mida aeg-ajalt kärbitakse. Sisse Java, saab seda saavutada lihtsalt java.util kasutades. Juhuslik klass.

Esimene samm, nagu mis tahes API kasutamisel klass, peab impordiavalduse panema enne oma programmiklassi algust:

Järgmisena looge juhuslik objekt:

Objekt Juhuslik pakub teile lihtsat juhuslike arvude generaatorit. Objekti meetodid võimaldavad valida juhuslikke numbreid. Näiteks tagavad meetodid nextInt () ja nextLong () arvu, mis jääb vastavalt int ja pika andmetüübi väärtuste vahemikku (negatiivne ja positiivne):

Tagastatud numbrid valitakse juhuslikult valitud int ja pikkade väärtustena:

Juhuslike numbrite valimine teatud vahemikust

Tavaliselt peavad genereeritavad juhuslikud numbrid olema teatud vahemikust (nt vahemikus 1 kuni 40). Selleks saab NextInt () meetod aktsepteerida ka int parameetrit. See tähistab numbrivahemiku ülemist piiri. Ülemist piirinumbrit ei ole siiski ühena neist numbritest, mida saab valida. See võib tunduda segane, kuid NextInt () meetod töötab nullist ülespoole. Näiteks:

instagram viewer

valib ainult juhusliku arvu vahemikus 0 kuni 39 (kaasa arvatud). 1-st algava vahemiku valimiseks lisage NextInt () -meetodi tulemusele lihtsalt 1. Näiteks arvu valimiseks vahemikus 1 kuni 40 (kaasa arvatud) lisage üks tulemus:

Kui vahemik algab rohkem kui üks, peate tegema järgmist.

  • miinus algusnumber ülemisest piirnumbrist ja seejärel üks.
  • lisage järgmise numbri () meetodi tulemusele algusnumber.

Näiteks arvu valimiseks vahemikus 5 kuni 35 (kaasa arvatud) on ülempiiriks 35-5 + 1 = 31 ja tulemusele tuleb lisada 5:

Kui juhuslik on juhuslik klass?

Ma peaksin märkima, et juhuslik klass genereerib juhuslikke numbreid deterministlikult. Juhuslikkust tekitav algoritm põhineb numbril, mida nimetatakse seemneks. Kui seemnete arv on teada, siis on võimalik algoritmist välja mõelda numbrid, mida toodetakse. Selle tõestuseks kasutan numbreid alates sellest kuupäevast Neil Armstrong astus esimest korda Kuule kui minu seemnenumber (20. juuli 1969):

Pole tähtis, kes seda koodi haldab, toodetakse juhuslike numbrite jada järgmiselt:

Vaikimisi seemenumber, mida kasutavad:

on praegune aeg millisekundites alates 1. jaanuarist 1970. Tavaliselt annab see enamikul eesmärkidel piisavalt juhuslikke numbreid. Pange aga tähele, et kaks juhusliku arvu generaatorit, mis on loodud sama millisekundi jooksul, genereerivad samu juhuslikke numbreid.

Samuti olge ettevaatlik, kui kasutate klassi Random juhuslikult kõigi rakenduste jaoks, millel peab olema turvaline juhuslike arvude generaator (nt hasartmängude programm). Võimalik, et seemnete arvu saab oletada rakenduse töötamise aja põhjal. Üldiselt on nende rakenduste jaoks, kus juhuslikud arvud on absoluutselt kriitilised, kõige parem leida juhuslikule objektile alternatiiv. Enamiku rakenduste puhul, kus on vaja lihtsalt teatud juhuslikku elementi (nt lauamängu täringud), töötab see hästi.