Zufallszahlen mit dem Header random
Erzeugen Sie hochwertige Zufallszahlen mit modernen Engines und Verteilungen.
Zufallszahlen mit dem Header random ist eine kostenlose C++ Academy-Lektion auf CoddyKit. Dies ist Lektion 3 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 C++ Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.
Warum nicht rand()?
Das veraltete C-std::rand() verwendet einen globalen Zustand, hat eine schlechte statistische Qualität und ist nicht threadsicher. Modernes C++ bietet in <random> deutlich bessere Werkzeuge.
Das Rezept in drei Teilen
Zufallszahlen in modernem C++ bestehen aus drei Komponenten:
- einer Seed-Quelle (echte Entropie)
- einer Generator-Engine (deterministischer Zustand)
- einer Verteilung (formt die Ausgabe)
Initialisierung mit random_device
std::random_device liest echte Entropie aus dem Betriebssystem — kann aber langsam sein. Verwenden Sie ihn einmal, um eine schnelle Engine zu initialisieren.
#include <random>
std::random_device rd;
std::mt19937 engine(rd());Die mt19937-Engine
std::mt19937 (Mersenne-Twister) ist eine schnelle Pseudozufalls-Engine mit hervorragender statistischer Qualität. Für die meisten Anwendungen ist sie die Standardwahl.
Gleichverteilung für Ganzzahlen
Erzeugt gleichverteilte Ganzzahlen in einem geschlossenen Intervall.
std::uniform_int_distribution<int> dice(1, 6);
int roll = dice(engine);Gleichverteilung für reelle Zahlen
Für Gleitkommazahlen in einem halboffenen Intervall [a, b).
std::uniform_real_distribution<double> dist(0.0, 1.0);
double x = dist(engine);Normalverteilung (Gauß-Verteilung)
Für Zufallszahlen in Form einer Glockenkurve — häufig in Simulationen und beim maschinellen Lernen verwendet.
std::normal_distribution<double> norm(0.0, 1.0); // mean 0, stddev 1
double x = norm(engine);Weitere Verteilungen
Die Bibliothek enthält viele weitere: bernoulli_distribution, poisson_distribution, exponential_distribution, discrete_distribution und mehr.
Reproduzierbare Zufallszahlen
Initialisieren Sie für Tests die Engine mit einem festen Wert, damit sie bei jedem Durchlauf dieselbe Sequenz erzeugt.
std::mt19937 engine(42);
// Same output every time you run the programZufälliges Mischen
Mischen Sie einen Container mit std::shuffle, das jede Engine akzeptiert.
#include <algorithm>
std::vector<int> v = {1,2,3,4,5};
std::shuffle(v.begin(), v.end(), engine);Stolperfalle: Erneute Initialisierung in einer Schleife
Erzeugen Sie nicht für jede Zufallszahl ein neues random_device oder eine neue Engine. Erzeugen Sie eine Engine und verwenden Sie sie für alle Aufrufe wieder.
Kurzer Test
Was ist die sicherste moderne C++-Methode, eine Pseudozufalls-Engine zu initialisieren?
Zusammenfassung
Modernes C++ verwendet random_device zur Initialisierung, mt19937 als Engine und eine Verteilung wie uniform_int_distribution, um die Ausgabe zu formen. Verwenden Sie die Engine wieder — erzeugen Sie niemals für jeden Aufruf eine neue.
Häufig gestellte Fragen
Ist die Lektion „Zufallszahlen mit dem Header random“ kostenlos?
Ja — der vollständige Text von „Zufallszahlen mit dem Header random“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C++ Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Zufallszahlen mit dem Header random“?
Erzeugen Sie hochwertige Zufallszahlen mit modernen Engines und Verteilungen. Du übst C++ 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 C++ Academy zu starten?
Keine Vorkenntnisse erforderlich. C++ 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 3 von 4.
Wie lange dauert die Lektion „Zufallszahlen mit dem Header random“?
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 C++ Academy-Lektion Code schreiben und ausführen?
Ja. Jede C++ 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
- Ganzzahl- und Gleitkommatypen
- Der Header cmath: pow, sqrt, abs, round
- Zufallszahlen mit dem Header random
- Numerische Grenzen und Überlaufverhalten