Zufallszahlen erzeugen
Random und ThreadLocalRandom
Zufallszahlen erzeugen ist eine kostenlose Java Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Java Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Java Academy-Kurs umfasst insgesamt 4 Lektionen.
Zufallszahlen erzeugen
Zufallswerte sind die Grundlage für Spiele, Simulationen und Stichproben. Java bietet Math.random(), die Klasse Random und ThreadLocalRandom für nebenläufigen Code.
Grundlagen von Math.random
Math.random() gibt ein double im Bereich [0.0, 1.0) zurück: null ist eingeschlossen, eins ist ausgeschlossen.
public class Main {
public static void main(String[] args) {
double r = Math.random();
System.out.println("Value between 0 and 1: " + r);
}
}Math.random skalieren
Multiplizieren und casten Sie, um einen Ganzzahlbereich zu erhalten. (int)(Math.random() * 6) liefert Werte von 0 bis 5.
public class Main {
public static void main(String[] args) {
int roll = (int)(Math.random() * 6) + 1;
System.out.println("Dice: " + roll);
}
}Die Random-Klasse
Die Klasse java.util.Random ist flexibler. Erzeugen Sie eine Instanz und rufen Sie anschließend Methoden wie nextInt, nextDouble und nextBoolean auf.
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 mit einer Grenze
nextInt(bound) gibt einen int von 0 inklusive bis bound exklusive zurück. nextInt(6) liefert Werte von 0 bis 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);
}
}Initialisieren für reproduzierbare Ergebnisse
Wenn Sie dem Konstruktor einen Startwert übergeben, wird die Folge deterministisch: Derselbe Startwert erzeugt immer dieselben Zahlen. Das ist für Tests äußerst wertvoll.
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));
}
}Gleicher Startwert, gleiche Folge
Zwei mit demselben Startwert erstellte Random-Objekte erzeugen identische Folgen. Das ist nützlich, wenn ein Fehler exakt reproduziert werden muss.
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
In nebenläufigen Programmen wird ein einzelnes gemeinsam verwendetes Random-Objekt zum Engpass. ThreadLocalRandom.current() stellt jedem Thread einen eigenen Generator ohne gegenseitige Blockierung bereit.
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);
}
}Verwenden Sie nicht ein Random-Objekt gemeinsam für mehrere Threads
Übergeben Sie nicht dieselbe Random-Instanz an viele Threads; dies kann zu einer ungünstigen Verteilung und gegenseitiger Blockierung führen. Verwenden Sie in nebenläufigem Code vorzugsweise ThreadLocalRandom.
Double-Werte und Gaußverteilung
nextDouble() liefert Werte im Bereich [0,1), und nextGaussian() gibt Werte aus einer Normalverteilung mit dem Mittelwert 0 und der Standardabweichung 1 zurück.
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());
}
}Das passende Werkzeug auswählen
Verwenden Sie Math.random() für schnell einen double-Wert, Random, wenn Sie Grenzen oder einen Startwert benötigen, und ThreadLocalRandom in nebenläufigem Code. Für sicherheitsrelevante Zufallswerte verwenden Sie stattdessen SecureRandom.
Kurzer Test
Testen Sie Ihr Verständnis von Zufallswerten.
Zusammenfassung
Sie haben gelernt, Zufallszahlen zu erzeugen.
Math.random()liefert einen double-Wert im Bereich [0,1).Random.nextInt(bound)liefert Werte von 0 bis bound-1.- Ein Startwert macht Folgen reproduzierbar.
ThreadLocalRandomist die threadsichere Wahl für nebenläufigen Code.
Häufig gestellte Fragen
Ist die Lektion „Zufallszahlen erzeugen“ kostenlos?
Ja — der vollständige Text von „Zufallszahlen erzeugen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Java Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Java Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Zufallszahlen erzeugen“?
Random und ThreadLocalRandom Du übst Java Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Java Academy zu starten?
Keine Vorkenntnisse erforderlich. Java Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Zufallszahlen erzeugen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Java Academy-Lektion Code schreiben und ausführen?
Ja. Jede Java Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Die Math-Klasse
- Zufallszahlen erzeugen
- Zufallsbereiche und Mischen
- Runden und Grenzen mit Math