Generering af tilfældige numre i Java

click fraud protection

Genererer en serie af tilfældige tal er en af ​​de almindelige opgaver, der dukker op fra tid til anden. I Java, kan det opnås simpelthen ved hjælp af java.util. Tilfældig klasse.

Det første trin, som med brugen af ​​ethvert API klasse, er at placere importerklæringen inden starten af ​​din programklasse:

Opret derefter et tilfældigt objekt:

Det tilfældige objekt giver dig en simpel tilfældig talgenerator. Objektets metoder giver mulighed for at vælge tilfældige tal. For eksempel returnerer metoden NextInt () og nextLong () et tal, der ligger inden for intervallet af værdier (negativ og positiv) for henholdsvis int og lange datatyper:

De returnerede numre vælges tilfældigt mellem int og lange værdier:

Valg af tilfældige tal fra et bestemt område

Normalt skal de tilfældige tal, der skal genereres, være fra et bestemt interval (f.eks. Mellem 1 og 40 inklusive). Til dette formål kan nextInt () -metoden også acceptere en int-parameter. Den angiver den øverste grænse for antallet af tal. Imidlertid er det øvre grænse ikke inkluderet som et af de numre, der kan vælges. Det lyder måske forvirrende, men metoden NextInt () fungerer fra nul og opad. For eksempel:

instagram viewer

vælger kun et tilfældigt tal fra 0 til 39 inklusive. For at vælge fra et interval, der starter med 1, skal du blot tilføje 1 til resultatet af metoden NextInt (). For eksempel at vælge et tal mellem 1 og 40 inklusivt tilføje et til resultatet:

Hvis området starter fra et højere tal end et, skal du:

  • minus startnummeret fra det øvre grænsetal, og tilføj derefter et.
  • tilføj startnummeret til resultatet af metoden NextInt ().

For at vælge et tal fra 5 til 35 inklusive, vil det øverste grænsetal for eksempel være 35-5 + 1 = 31, og der skal tilføjes 5 til resultatet:

Hvor tilfældigt er den tilfældige klasse?

Jeg skal påpege, at tilfældig klasse genererer tilfældige tal på en deterministisk måde. Algoritmen, der producerer tilfældigheden, er baseret på et tal kaldet et frø. Hvis frønummeret er kendt, er det muligt at finde ud af de tal, der vil blive produceret fra algoritmen. For at bevise dette bruger jeg numrene fra den dato Neil Armstrong trådte først på Månen som mit frønummer (20. juli 1969):

Uanset hvem der kører denne kode, vil rækkefølgen af ​​"tilfældige" producerede numre være:

Som standard er frønummeret, der bruges af:

er den aktuelle tid i millisekunder siden 1. januar 1970. Normalt producerer dette tilstrækkeligt tilfældige tal til de fleste formål. Bemærk dog, at to tilfældige talgeneratorer oprettet inden for det samme millisekund vil generere de samme tilfældige tal.

Vær også forsigtig, når du bruger tilfældig klasse til ethvert program, der skal have en sikker tilfældig talgenerator (f.eks. Et spilprogram). Det kan være muligt at gætte frønummeret baseret på det tidspunkt, applikationen kører. Generelt for applikationer, hvor tilfældige tal er absolut kritiske, er det bedst at finde et alternativ til det tilfældige objekt. For de fleste applikationer, hvor der bare skal være et bestemt tilfældigt element (f.eks. Terninger til et brætspil), fungerer det fint.

instagram story viewer