I Java finns en inbyggd klass, java.util.Random som man kan använda för att generera ett slumptal.
För att generera ett slumpmässigt tal i Java, kan man använda den inbyggda klassen Random. Klassen Random finns inbyggt i paketet java.utils
och genom att importera detta paket, kan vi använda oss av dess inbyggda metoder.
För att generera ett slumpmässigt tal i Java, kan man använda den inbyggda klassen
Random
.
För att skapa ett slumptal i Java behöver man:
Random
från paketet java.util
.I Java finns det ett standardpaket, java.util
som innehåller flera samlingar av verktyg som ofta underlättar när man vill ha vissa egenskaper i sitt program. Ett inbyggt verktyg är klassen Random
som genererar ett slumptal mellan ett intervall.
Klassen Random kan skapa ett slumptal av en viss datatyp, exempelvis en double, en float eller en int.
Klassen Random i Java:
java.util
.Det är enkelt att skapa ett slumptal i Java, det du behöver göra är:
java.utils
Random
.Exempel: Följande kod skriver ut ett heltal mellan 0 och 9:
import java.util.Random; // Importerar klassen Random public class Slumptal { public static void main(String[] args) { Random rand = new Random(); // Skapar en instans av klassen random int randomInt = rand.nextInt(10); // Genererar ett slumptal av typen int i intervallet 0 till 9 System.out.println(randomInt); // Skriver ut talet } }
Förklaring:
Vi importerar först klassen Random
med kommandot import java.util.Random
. Detta måste vi göra för att komma åt alla metoder som ligger i klassen Random
.
Sedan skapar vi en så kallad instans av klassen Random
. Detta gör vi för att kunna använda de metoder som finns i klassen Random
. I detta fall skapar vi en instans som vi ger namnet rand
. Med rand
kan vi kalla på de metoder som finns i klassen Random
.
Avslutningsvis så skapar vi en variabel med namnet randomInt av datatypen int. Vi tilldelar ett slumptal med metoden nextInt()
som genererar ett slumpmässigt heltal. I detta specifika fall anger vi även 10, det innebär att ett heltal kommer genereras mellan 0 och 9.
Klassen random innehåller massor av metoder som skapar olika slumpmässiga tal beroende på vad för slags slumptal du önskar. Exempelvis:
import java.util.Random; // Importerar klassen Random public class Slumptal { public static void main(String[] args) { Random rand = new Random(); // Skapar en instans av klassen random System.out.println(rand.nextBoolean()); // Slumpmässig boolean System.out.println(rand.nextDouble()); // Slumpmässigt flyttal System.out.println(rand.nextInt()); // Slumpmässigt heltal System.out.println(rand.nextFloat()); // Slumpmässig float System.out.println(rand.nextLong()); // Slumpmässig long } }
Vilket kommer ge slumpmässiga tal av den specifika datatypen varje gång man kör programmet. Exempelvis:
8 true 0.8512032215091105 382527602 0.75247055 7757674642800881858
Observera att detta bara är en exempelutskrift och att nya tal kommer genereras varje gång man kör koden.
I detta fall använder vi klassen Randoms inbyggda metoder för att generera ett slumptal av en viss datatyp, exempelvis metoden nextInt
för ett heltal och nextDouble
för ett flyttal och så vidare. Klassen Random
innehåller dessutom ännu fler metoder med ytterligare egenskaper. För fullständig dokumentation kan man gå till oracles officiella dokumentation över klassen Random.
På motsvarande sätt kan vi skapa ett slumptal mellan ett specifikt intervall. Klassen Random
kommer alltid generera ett slumptal mellan 0 och den siffra man anger i metoden nextInt()
. Följande kod skapar därför ett slumptal mellan ett specifikt intervall.
int slumptal = rand.nextInt(max - min) + min;
Exempelvis, anger man max = 10 och min = -10 så kommer man få ett slumptal mellan -10 och 9. Observera alltså att maxtalet inte kommer vara ett av de tal som kan slumpas fram. Intervallet blir därför enligt:
min <= slumptal < max
Viktigt att komma ihåg är att en dator aldrig kan bli fullständigt slumpmässig. En dator gör aldrig någonting slumpmässigt, de är så kallade deterministiska, det vill säga en dator kommer alltid göra exakt det den blir tillsagd att göra och få exakt samma resultat varje gång den gör samma procedur. Det som händer i detta fall är helt enkelt att datorn använder matematiska algoritmer som är “tillräckligt” slumpmässiga, det vill säga, så pass slumpmässiga att vi som människor inte kan tolka det på ett annat sätt än just slumpmässigt.
Klassen Random genererar dessa så kallade pseudoslumpmässiga tal. Faktum är att klassen Random använder sig av ett så kallat seed som innebär att klassen Random har en gigantisk lista av förutbestämda tal. Varje gång metoden nextInt blir kallad på, tar den helt enkelt nästa värde som ligger i listan.
Det är möjligt att ange var i denna gigantiska lista av slumpmässiga tal man vill börja.
rand.setSeed(0);
Varje gång du kör ditt program, kommer du alltid få samma slumpmässiga tal, eftersom programmet alltid startar från samma position i listan. Så hur slumpmässigt är egentligen ett slumpmässigt tal?
För att komma runt detta använder klassen Random ett seed som är baserat på System.nanoTime()
, det vill säga, den “nanosekund” som funktionen blev kallad på. Sannolikheten att samma nanosekund blir kallad på två gånger i rad är alltså mer eller mindre obefintligt.
Du kan skapa ett slumpmässigt tal inom intervallet min <= slumptal < max med följande kod: int slumptal = rand.nextInt(max - min) + min
;
Ja, exempelvis har klassen Math
en randomfunktion.
Som standard är klassen Random likformig sannolikhetsfördelad vilket innebär att det är samma sannolikhet alla tal blir slumpmässigt valda (likt ett tärningskast). Observera dock att det är möjligt att välja andra fördelningar i Klassen Random om så önskas.
Vad tyckte du om sidan?
Lämna gärna feedback och hjälp oss göra sidan bättre
Feedback gör oss bättre!
Lämna gärna feedback om vad du tyckte om avsnittet!