I Java finns en inbyggd klass, java.util.Random som man kan använda för att generera ett slumptal.
Hur genererar man ett slumptal i Java?
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.util 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:
- Importera klassen
Randomfrån paketetjava.util. - Ange ett intervall som slumptalet ska genereras från.
- Bestämma vilken datatyp som slumptalet ska ta, exempelvis ett heltal eller decimaltal etc.
Klassen Random i Java
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:
- Kommer från standardpaketet
java.util. - Genererar ett slumpmässigt tal.
- Skapar ett "Pseudorandom" tal (se nedan).
Hur skapar man ett slumptal i Java - Exempel
Det är enkelt att skapa ett slumptal i Java, det du behöver göra är:
- Importera klassen Random från paketet
java.util - Skapa en instans av klassen
Random. - Generera ett slumptal från instansen genom att bestämma vilket sorts tal som ska genereras, exempelvis ett heltal eller flyttal.
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.
Metoder i Klassen Random
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:
true
0.8512032215091105
382527602
0.75247055
7757674642800881858
Observera att detta bara är en exempelutskrift och att talen kan skilja sig mellan körningar och även kan upprepas.
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.
Generera ett slumptal mellan ett specifikt intervall i Java
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
Pseudorandom - Är slumpmässiga tal verkligen slumpmässiga?
Random är en pseudoslumptalsgenerator. Den beräknar en talföljd från ett internt tillstånd. Samma seed och samma följd av metodanrop ger samma talföljd, vilket är användbart i tester. Det betyder inte att alla slumpkällor i en dator är deterministiska.
Ett seed används för att initiera generatorns tillstånd. Random beräknar nästa värde med en algoritm; det finns ingen gigantisk lagrad lista med alla slumptal.
Med ett uttryckligt seed, till exempel new Random(123), kan du återskapa samma talföljd. Det handlar om generatorns tillstånd, inte en lagrad lista.
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?
Konstruktorn utan angivet seed väljer ett starttillstånd åt dig. Räkna inte med att det blir unikt eller lämpligt för säkerhetsändamål. För lösenord, tokens och andra säkerhetskänsliga värden används java.security.SecureRandom.
Vanliga frågor och svar - Klassen Random
För ett heltal från 1 till och med N, där N är positivt: int slumptal = rand.nextInt(N) + 1;.
Ja, exempelvis har klassen Math en randomfunktion.
Metoder som nextInt(bound) är utformade för en likformig fördelning över sina möjliga värden. nextGaussian ger däremot en normalfördelning. Resultaten är pseudoslumpmässiga; använd SecureRandom för säkerhetskänsliga ändamål.