Generera slumpmässiga nummer i Java

Genererar en serie av slumpmässiga siffror är en av de vanliga uppgifterna som dyker upp då och då. I Java, kan det uppnås helt enkelt genom att använda java.util. Slumpmässig klass.

Det första steget, som med användning av alla API: er klass, är att placera importmeddelandet före starten av din programklass:

Skapa sedan ett slumpmässigt objekt:

Random-objektet ger dig en enkel generator för slumpmässigt nummer. Objektets metoder ger möjlighet att välja slumpmässiga nummer. Exempelvis kommer metoden NextInt () och nextLong () att returnera ett nummer som ligger inom värdet (negativt och positivt) för int-respektive långdatatyper:

De returnerade siffrorna kommer att väljas slumpmässigt och långa värden:

Plocka slumpmässiga nummer från ett visst intervall

Normalt måste de slumpmässiga siffrorna som ska genereras vara från ett visst intervall (t.ex. mellan 1 och 40 inklusive). För detta ändamål kan metoden nextInt () också acceptera en int-parameter. Den anger den övre gränsen för antalet intervall. Det övre gränsenumret ingår dock inte som ett av de nummer som kan väljas. Det kanske låter förvirrande men metoden nextInt () fungerar från noll och uppåt. Till exempel:

instagram viewer

kommer bara att välja ett slumpmässigt antal från 0 till 39 inklusive. För att välja från ett område som börjar med 1, lägg bara till 1 till resultatet av metoden nextInt (). Till exempel, för att välja ett nummer mellan 1 och 40 inkluderande inkluderar du ett till resultatet:

Om intervallet börjar från ett högre nummer än ett måste du:

  • minus startnumret från det övre gränsenumret och lägg sedan till ett.
  • lägg till startnumret till resultatet av metoden nextInt ().

För att välja ett nummer från 5 till 35 inklusive, kommer det övre gränsenumret att vara 35-5 + 1 = 31 och 5 måste läggas till resultatet:

Hur slumpmässigt är slumpmässig klass?

Jag bör påpeka att slumpmässiga klassen genererar slumpmässiga siffror på ett deterministiskt sätt. Algoritmen som producerar slumpmässigheten är baserad på ett nummer som kallas ett frö. Om kärnnummer är känt är det möjligt att räkna ut siffrorna som kommer att produceras från algoritmen. För att bevisa detta använder jag siffrorna från det datumet Neil Armstrong började först på månen som mitt utsädesnummer (20 juli 1969):

Oavsett vem som kör denna kod kommer sekvensen med "slumpmässiga" producerade nummer att vara:

Som standard är kärnnummer som används av:

är den aktuella tiden i millisekunder sedan 1 januari 1970. Normalt ger detta tillräckligt slumpmässiga nummer för de flesta ändamål. Observera dock att två slumptalgeneratorer som skapats inom samma millisekund kommer att generera samma slumpmässiga nummer.

Var också försiktig när du använder Random-klassen för alla applikationer som måste ha en säker slumptalsgenerator (t.ex. ett spelprogram). Det kan vara möjligt att gissa frönumret baserat på den tid applikationen körs. Generellt sett är det bäst att hitta ett alternativ till slumpmässiga objekt för applikationer där slumpmässiga siffror är absolut kritiska. För de flesta applikationer där det bara behöver finnas ett visst slumpmässigt element (t.ex. tärningar för ett brädspel) fungerar det bra.

instagram story viewer