Tilfældigt genererede tal har mange anvendelsesmuligheder i edb -programmer, såsom at skabe uforudsigelighed i spil, modellering simuleringer og udføre kryptering. Java giver to teknikker til at generere tilfældige tal . Math Biblioteket tilbyder en enkel , men praktisk , tilfældig metode til generering af en tilfældig kommatalsværdi mellem 0 og 1,0 . Tilfældig klassen giver mere fleksible tilfældige tal generatorer kapaciteter. Salg tilfældige tal generatorer bruges i programmering hasardspil.
Grundlæggende
Et tilfældigt tal generator er en rutinemæssig designet til at producere en numerisk værdi , der synes at valgt tilfældigt. I Java, som med alle programmeringssprog de værdier der genereres af Math.random () og Random klassen synes tilfældigt , men faktisk er det ikke. Derfor er sådanne metoder siges at producere pseudo- tilfældige tal
Egenskaber
Pseudo- tilfældige tal generatorer har to grundlæggende egenskaber: . . Distribution og frø < br >
"distribution " refererer til den frekvens, hvor hver værdi i en serie af genererede tal vises. De fleste af Javas tilfældige metoder producere en ensartet fordeling af numre , hvilket betyder ingen værdi vises oftere end nogen anden. Tilfældig klasse har en metode , nextGaussian , som genererer numre, der følger en Gauss (også "normal " eller " klokke kurve " ) distribution .
" Seed " er et tal bruges til at initialisere en pseudo- tilfældigt tal generator . Givet den samme frø , vil et pseudo - tilfældigt tal generator producere en identisk serie af tal, når kaldes ved hjælp af de samme metoder og parametre . Evnen til at gengive et sæt tal er nyttig i debugging , afprøvning og andre scenarier, hvor genskabe et programs løbemiljø er nødvendig.
Math.random ()
Math.random ( )-metoden er en simpel pseudo - tilfældige tal generator . Det bruges simpelthen ved at kalde Math.random ( ) . Metoden returnerer en double mellem 0,0 (inklusive) og 1,0 ( eksklusiv ) . Værdierne producerede følge en ensartet fordeling . Hvis en anden række , type eller distribution er nødvendige, skal programmøren kaste resultaterne til den ønskede type og udføre yderligere beregninger for at generere det ønskede resultat.
Random Class
< p> Den Random klassen er mere fleksibel end Math.random () , men kræver en lidt større indsats at bruge. En instans af Random klassen er konstrueret. Konstruktøren vil tage lang heltal som seed-værdi , eller hvis en seed-værdi ikke er forudsat, vil den bruge den aktuelle tid i millisekunder som standard frø. Tilfældig klassen giver en metode til indstilling af frø efter anlæggelsen. Der er flere pseudo- tilfældige tal genererende metoder i denne klasse , hver foranstillet med ordet " næste ". De fleste af disse metoder returnere ensartet fordelte værdier på tværs af forskellige intervaller og forskellige typer, såsom heltal , floating point værdier og booleske værdier. Den nextGaussian metode returnerer Gauss distribuerede fordobles. Den nextInt metode kan tage et heltal parameter , der sætter den øvre ende af intervallet.
Overvejelser
Generering et sæt af tal, der ikke kan forudsiges er undertiden ønskeligt , for eksempel for at forhindre spillere fra at kunne snyde i spil. De pseudo - tilfældige værdier, der returneres af flere forekomster af Random klasse kan kombineres for at tilvejebringe yderligere tilfældighed i det resulterende sæt . Implementering af en uensartet fordeling kan også være nyttige.
Java genererer pseudo- tilfældige tal, der følger enten en ensartet eller Gaussisk fordeling . Uensartet distributioner er nyttige , især i simuleringer for at efterligne scenarier , der opfylder bestemte udlodninger i virkeligheden. Andre distributioner kan opnås ved hjælp af inverse kumulative fordelingsfunktion for den ønskede fordeling . Denne funktion tager en sandsynlighed ( en værdi mellem 0,0 og 1,0 eksklusivt ) som en parameter. De nonzero resultater af enten Math.random () eller en af de Tilfældige klassen metoder , der returnerer en kommatalsværdi kan bruges til denne parameter. Se afsnittet Ressourcer for et link til Apache Math Library , som giver inverse metoder til flere kumulative distributioner.