Generera slumptal
Random och ThreadLocalRandom.
Generera slumptal är en gratis lektion i Java Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Java Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Java Academy innehåller totalt 4 lektioner.
Generera slumptal
Slump används i spel, simuleringar och urval. Java erbjuder Math.random(), klassen Random och ThreadLocalRandom för samtidig kod.
Grunderna i Math.random
Math.random() returnerar en double i intervallet [0.0, 1.0): noll är inkluderat och ett är exkluderat.
public class Main {
public static void main(String[] args) {
double r = Math.random();
System.out.println("Value between 0 and 1: " + r);
}
}Skala Math.random
Multiplicera och konvertera typen för att få ett heltalsintervall. (int)(Math.random() * 6) ger värden från 0 till 5.
public class Main {
public static void main(String[] args) {
int roll = (int)(Math.random() * 6) + 1;
System.out.println("Dice: " + roll);
}
}Klassen Random
Klassen java.util.Random är mer flexibel. Skapa en instans och anropa sedan metoder som nextInt, nextDouble och nextBoolean.
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random rng = new Random();
System.out.println(rng.nextBoolean());
System.out.println(rng.nextDouble());
}
}nextInt med en övre gräns
nextInt(bound) returnerar ett int från 0, inkluderat, till bound, exkluderat. nextInt(6) ger värden från 0 till 5.
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random rng = new Random();
int value = rng.nextInt(100);
System.out.println("0 to 99: " + value);
}
}Seed för reproducerbarhet
Om du skickar ett seed till konstruktorn blir sekvensen deterministisk: samma seed ger alltid samma tal. Det är ovärderligt vid testning.
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random rng = new Random(42);
System.out.println(rng.nextInt(1000));
System.out.println(rng.nextInt(1000));
}
}Samma seed, samma sekvens
Två Random-objekt som skapas med samma seed ger identiska sekvenser. Det är användbart när ett fel måste återskapas exakt.
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random a = new Random(7);
Random b = new Random(7);
System.out.println(a.nextInt(50) == b.nextInt(50));
}
}ThreadLocalRandom
I flertrådade program blir ett enda delat Random-objekt en flaskhals. ThreadLocalRandom.current() ger varje tråd sin egen generator utan konkurrens om samma resurs.
import java.util.concurrent.ThreadLocalRandom;
public class Main {
public static void main(String[] args) {
int value = ThreadLocalRandom.current().nextInt(1, 7);
System.out.println("Dice: " + value);
}
}Dela aldrig ett Random-objekt mellan trådar
Skicka inte samma Random-instans till många trådar. Det kan leda till sämre fördelning och konkurrens om resursen. Använd helst ThreadLocalRandom i samtidig kod.
Doublevärden och gaussfördelningar
nextDouble() ger värden i [0,1), och nextGaussian() returnerar värden från en normalfördelning med medelvärdet 0 och standardavvikelsen 1.
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random rng = new Random(1);
System.out.println(rng.nextDouble());
System.out.println(rng.nextGaussian());
}
}Välj rätt verktyg
Använd Math.random() för ett snabbt double-värde, Random när du vill ange gränser eller ett seed, och ThreadLocalRandom i samtidig kod. För slumptal i säkerhetskänsliga sammanhang ska du använda SecureRandom i stället.
Snabbtest
Testa dina kunskaper om slump.
Sammanfattning
Du har lärt dig att generera slumptal.
Math.random()ger en double i [0,1).Random.nextInt(bound)ger värden från 0 till bound-1.- Ett seed gör sekvenser reproducerbara.
ThreadLocalRandomär det trådsäkra valet för samtidig kod.
Lär dig Java med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 104
- Lektioner
- 374
Vanliga frågor
Är lektionen ”Generera slumptal” gratis?
Ja – hela texten till ”Generera slumptal” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Java Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Java Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Generera slumptal”?
Random och ThreadLocalRandom. Ni övar på Java Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Java Academy?
Du behöver inga förkunskaper. Utbildningen i Java Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Generera slumptal”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Java Academy-lektionen?
Ja. Varje Java Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.