C 11 führte neue Funktionen zur Generierung von Zufallszahlen ein, um die Flexibilität zu erhöhen, Leistung und Konsistenz. Zu diesen Funktionen gehören Zufallszahlen-Engines und -Verteilungen, die die Einschränkungen herkömmlicher Zufallszahlengeneratoren wie rand() beheben.
Engines sind der Kern der Zufallszahlengenerierung. Sie erzeugen Folgen von Pseudozufallszahlen und sorgen für eine gleichmäßige Verteilung. C 11 bietet mehrere Engine-Optionen, darunter:
Verteilungen beschreiben die gewünschte Zufallszahlenverteilung. C 11 enthält Verteilungen zum Erzeugen von:
Um Zufallszahlen in C 11 zu generieren, befolgen Sie diese Schritte Schritte:
#include <random> // Engine std::mt19937 rng(std::random_device()()); // Distributions std::uniform_int_distribution<uint32_t> uint_dist; std::normal_distribution<double> normal_dist(0.5, 0.2); // Generate random numbers while (true) { std::cout << uint_dist(rng) << " " << normal_dist(rng) << std::endl; }
Gleichwahrscheinliche Ergebnisse stellen sicher, dass jede Zahl innerhalb des angegebenen Bereichs liegt die gleiche Chance, generiert zu werden, vermeiden Verzerrungen bei der Generierung von Zufallszahlen. Richtige Verteilungen, wie sie beispielsweise in
Zufallszahlengenerierung in C 11 unterstützt Parallelität. Um die Thread-Sicherheit zu gewährleisten, weisen Sie jedem Thread eine eigene Engine mit einem eindeutigen Startwert zu oder synchronisieren Sie den Zugriff auf das Engine-Objekt.
Das obige ist der detaillierte Inhalt vonWie verbessert C 11 die Erzeugung von Zufallszahlen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!