Praktische Beispiele
Würfel, Mischen und Stichproben
Praktische Beispiele ist eine kostenlose C++ Academy-Lektion auf CoddyKit. Dies ist Lektion 4 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.
Würfeln
Ein sechsseitiger Würfel ist eine uniform_int_distribution(1, 6), die von einer initialisierten Engine mit Werten versorgt wird.
#include <iostream>
#include <random>
int main() {
std::mt19937 gen(2026);
std::uniform_int_distribution<int> die(1, 6);
for (int i = 0; i < 5; ++i) std::cout << die(gen) << ' ';
std::cout << '\n';
return 0;
}Zwei Würfel addieren
Wenn Sie zwei Würfel werfen und ihre Augen addieren, erhalten Sie den bekannten Bereich von 2 bis 12 mit einem Maximum bei 7.
#include <iostream>
#include <random>
int main() {
std::mt19937 gen(1);
std::uniform_int_distribution<int> die(1, 6);
int total = die(gen) + die(gen);
std::cout << "two dice sum: " << total << '\n';
return 0;
}Eine Münze werfen
Eine faire Münze ist eine bernoulli_distribution(0.5). Zählen Sie bei vielen Würfen, wie oft Kopf erscheint.
#include <iostream>
#include <random>
int main() {
std::mt19937 gen(7);
std::bernoulli_distribution coin(0.5);
int heads = 0;
for (int i = 0; i < 100; ++i) if (coin(gen)) ++heads;
std::cout << heads << " heads out of 100\n";
return 0;
}Ein Kartenspiel mischen
std::shuffle ordnet einen Bereich mithilfe Ihrer Engine zufällig neu an und ist der moderne Ersatz für das entfernte random_shuffle.
#include <iostream>
#include <random>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> cards{1, 2, 3, 4, 5};
std::mt19937 gen(3);
std::shuffle(cards.begin(), cards.end(), gen);
for (int c : cards) std::cout << c << ' ';
std::cout << '\n';
return 0;
}Einen zufälligen Gewinner auswählen
Wählen Sie ein Element aus, indem Sie einen zufälligen Index innerhalb des Bereichs erzeugen.
#include <iostream>
#include <random>
#include <vector>
#include <string>
int main() {
std::vector<std::string> names{"Ann", "Ben", "Cara", "Dan"};
std::mt19937 gen(9);
std::uniform_int_distribution<int> pick(0, names.size() - 1);
std::cout << "winner: " << names[pick(gen)] << '\n';
return 0;
}Ziehen ohne Zurücklegen
std::sample zieht k verschiedene Elemente aus einem Bereich und eignet sich ideal für eine Lotterie oder die Auswahl von Quizfragen.
#include <iostream>
#include <random>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> pool{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
std::vector<int> picked;
std::mt19937 gen(4);
std::sample(pool.begin(), pool.end(), std::back_inserter(picked), 3, gen);
for (int x : picked) std::cout << x << ' ';
std::cout << '\n';
return 0;
}Zufällige Zeichen für Passwörter
Greifen Sie mithilfe einer gleichverteilten Verteilung auf einen Zeichensatz zu, um eine zufällige Zeichenkette zu erstellen.
#include <iostream>
#include <random>
#include <string>
int main() {
const std::string chars = "abcdefghijklmnopqrstuvwxyz";
std::mt19937 gen(13);
std::uniform_int_distribution<int> pick(0, chars.size() - 1);
std::string pw;
for (int i = 0; i < 8; ++i) pw += chars[pick(gen)];
std::cout << pw << '\n';
return 0;
}Gewichtete Auswahl
std::discrete_distribution wählt Indizes anhand vorgegebener Gewichtungen aus, sodass häufige Ergebnisse öfter auftreten.
#include <iostream>
#include <random>
int main() {
std::mt19937 gen(6);
std::discrete_distribution<int> d{10, 1, 1}; // index 0 is heaviest
int counts[3] = {0};
for (int i = 0; i < 120; ++i) counts[d(gen)]++;
std::cout << counts[0] << ' ' << counts[1] << ' ' << counts[2] << '\n';
return 0;
}Einen Random Walk simulieren
Gehen Sie zufällig einen Schritt nach links oder rechts und verfolgen Sie die Endposition – eine einfache stochastische Simulation.
#include <iostream>
#include <random>
int main() {
std::mt19937 gen(2);
std::bernoulli_distribution step(0.5);
int pos = 0;
for (int i = 0; i < 1000; ++i) pos += step(gen) ? 1 : -1;
std::cout << "final position: " << pos << '\n';
return 0;
}Würfeln, bis eine Sechs fällt
Wiederholen Sie eine Schleife, bis ein Ereignis eintritt, um Versuche zu modellieren – hier zählen Sie die Würfe, die bis zu einer Sechs benötigt werden.
#include <iostream>
#include <random>
int main() {
std::mt19937 gen(15);
std::uniform_int_distribution<int> die(1, 6);
int rolls = 0;
while (die(gen) != 6) ++rolls;
std::cout << "extra rolls before a six: " << rolls << '\n';
return 0;
}Testdaten erzeugen
Mit Verteilungen können Sie schnell einen Vektor mit Zufallswerten füllen, um Algorithmen zu testen.
#include <iostream>
#include <random>
#include <vector>
int main() {
std::mt19937 gen(21);
std::uniform_int_distribution<int> d(1, 50);
std::vector<int> data(5);
for (int& v : data) v = d(gen);
for (int v : data) std::cout << v << ' ';
std::cout << '\n';
return 0;
}Kurze Überprüfung
Testen Sie Ihr Verständnis praktischer Zufallsverfahren.
Zusammenfassung
Sie haben <random> praktisch angewendet:
- Würfel, Münzen und Gewinner mit Gleichverteilungen und Bernoulli-Verteilungen
std::shufflezum Umordnen undstd::samplezum Ziehen ohne Zurücklegendiscrete_distributionfür gewichtete Auswahlen sowie Simulationen wie Random Walks
Damit verfügen Sie über ein vollständiges Werkzeugset für assoziative Container, Hashing, Datei-E/A und Zufallsverfahren in C++.
Häufig gestellte Fragen
Ist die Lektion „Praktische Beispiele“ kostenlos?
Ja — der vollständige Text von „Praktische Beispiele“ 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 „Praktische Beispiele“?
Würfel, Mischen und Stichproben 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 4 von 4.
Wie lange dauert die Lektion „Praktische Beispiele“?
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
- Zufallszahlengeneratoren
- Verteilungen
- Richtig initialisieren
- Praktische Beispiele