0Pricing
C++ Academy · Lektion

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::shuffle zum Umordnen und std::sample zum Ziehen ohne Zurücklegen
  • discrete_distribution fü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

  1. Zufallszahlengeneratoren
  2. Verteilungen
  3. Richtig initialisieren
  4. Praktische Beispiele
← Zurück zu C++ Academy