0Pricing
C++ Academy · Lektion

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 program

Zufä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

  1. Ganzzahl- und Gleitkommatypen
  2. Der Header cmath: pow, sqrt, abs, round
  3. Zufallszahlen mit dem Header random
  4. Numerische Grenzen und Überlaufverhalten
← Zurück zu C++ Academy