slumpmässigt genererade siffror har många användningsområden inom datorprogram , som att skapa oförutsägbarhet i spel , modellering simuleringar och utför kryptering . Java finns två metoder för att generera slumptal . Den Math Biblioteket erbjuder en enkel , men bekvämt , slumpmässig metod för att generera ett slumpmässigt flyttal värde mellan 0 och 1,0 . Random klassen ger mer flexibla slumpmässiga möjligheter antal generatoraggregat .
slumptal generatorer används i programmering hasardspel .
Basics
Ett slumpgenerator är en rutin utformad för att producera ett numeriskt värde som verkar som valts av en slump. I Java , som med alla programmeringsspråk , de värden som alstras av Math.random ( ) och Random klassen verkar slumpmässigt , men egentligen är det inte. Därför är sådana metoder sägs producera pseudo - slumptal
Fastigheter
Pseudo - slumpgeneratorer har två grundläggande egenskaper : . . Distribution och frö
" fördelning " hänför sig till frekvensen i vilken varje värde i en serie av genererade nummer visas. De flesta av Javas slumpmässiga metoder ger en jämn fördelning av tal , vilket innebär ingen värde kommer att visas oftare än någon annan . Random klass har en metod , nextGaussian , vilket genererar nummer som följer en Gauss ( även " normala " eller " bell curve " ) fördelning .
" Frö " är ett nummer som används för att initiera en pseudo - slumptal generator. Givet samma frö , kommer en pseudo- slumpgenerator ge en identisk serie siffror när anropas med samma metoder och parametrar. Förmågan att reproducera en uppsättning siffror är användbar vid felsökning , testning och andra scenarier där återskapa ett program som kör miljö behövs . Addera Math.random ( )
Math.random ()-metoden är en enkel pseudo- slumpgenerator . Det används helt enkelt genom att ringa Math.random ( ) . Metoden returnerar en dubbel mellan 0,0 ( inklusive) och 1,0 ( exklusiva ) . Värdena producerade följa en likformig fördelning . Om ett annat intervall , typ eller distribution krävs , måste programmeraren kasta resultatet till önskad typ och utföra ytterligare beräkningar för att generera det önskade resultatet .
Random Class
Random klassen är mer flexibel än Math.random ( ) , men kräver lite mer ansträngning att använda . En instans av Random klassen är konstruerad . Konstruktorn tar en lång heltal som fröet värdet , eller om ett frö värde inte finns , kommer den att använda den aktuella tiden i millisekunder som standard utsäde . Random klassen ger en metod för att fastställa säd efter byggandet . Det finns flera pseudo - slumptalsgenereringsfunktion metoder i denna klass , var och inleds med ordet " nästa ". De flesta av dessa metoder återkommer jämnt fördelade värden inom olika områden och av olika slag , till exempel heltal , flytande punktvärden och booleska värden . Den nextGaussian Metoden returnerar Gaussiska distribuerade dubbel. Den nextInt Metoden kan ta ett heltal parameter som sätter den övre delen av intervallet .
Överväganden
Generera en uppsättning siffror som inte kan förutses är ibland önskvärt , för exempelvis , för att förhindra spelare från att kunna fuska i spel . De pseudo- slumpmässiga värden som returneras av flera instanser av Random klassen kan kombineras för att ge ytterligare slumpmässighet i den resulterande uppsättningen. Implementera en ojämn fördelning kan också vara användbart .
Java genererar pseudo - slumptal som följer antingen en jämn eller Gaussfördelning . Nonuniform distributioner är användbara , särskilt i simuleringar att härma scenarier som uppfyller specifika fördelningar i verkligheten . Andra fördelningar kan uppnås med den inversa kumulativa fördelningsfunktionen för den önskade fördelningen . Denna funktion tar en sannolikhet ( ett värde mellan 0,0 och 1,0 exklusiva) som en parameter. De nonzero resultat antingen Math.random ( ) eller någon av de slumpmässiga klassmetoder som returnerar ett flyttal kan användas för denna parameter . Se avsnittet Resurser för en länk till Apache Math biblioteket , vilket ger inversa metoder för flera kumulativa fördelningar .