Zufallszahlengenerierung in C 11: Eine einfache Aufschlüsselung
C 11 führte eine leistungsstarke Reihe von Funktionen für die Zufallszahlengenerierung ein, die Programmierern Folgendes bietet ein umfassendes Toolset zur Generierung von Zufallszahlen mit verschiedenen Verteilungen. Das Verständnis dieser Funktionen kann entmutigend sein, aber wir werden sie in einfache Konzepte aufschlüsseln, um ihre Verwendung zu verdeutlichen.
Was sind Engines und Distributionen?
-
Engines: Der Kern der Zufallszahlengenerierung ist das Konzept einer Engine. Eine Engine ist ein Generator, der eine Folge von Zahlen erzeugt, die zufällig erscheinen. C 11 bietet mehrere Engines, wie zum Beispiel den Mersenne Twister, die einen langen Zeitraum an Pseudozufallszahlen garantieren.
-
Verteilungen:Verteilungen wandeln die gleichmäßige Ausgabe einer Engine in spezifische Verteilungen um. Beispielsweise weist eine Gleichverteilung allen Elementen innerhalb eines bestimmten Bereichs gleiche Wahrscheinlichkeiten zu, während eine Normalverteilung die bekannte Glockenkurve simuliert.
So generieren Sie Zufallszahlen
Das Generieren von Zufallszahlen umfasst drei wichtige Schritte:
-
Einrichten einer Engine: Instanziieren Sie eine Engine, z. B. std::mt19937 rng.
-
Seed der Engine: Initialisieren Sie die Engine mit einem Seed-Wert, z. B. rng.seed(seed_val).
-
Erstellen Verteilungen: Definieren Sie gewünschte Verteilungen, z. B. std::uniform_int_distribution uint_dist.
-
Zufallszahlen generieren: Nutzen Sie die Engine, um Zufallszahlen innerhalb der angegebenen Verteilung zu generieren, z. B. uint_dist(rng).
Wie Funktionieren sie?
Pseudozufallszahlengeneratoren verlassen sich darauf auf mathematischen Algorithmen, um Sequenzen zu erzeugen, die unserer Wahrnehmung zufällig erscheinen. Sie erzeugen keine echten Zufallszahlen, sondern eine lange Reihe von Pseudozufallszahlen, die statistische Tests auf Zufälligkeit bestehen.
Parallelität
Die Gewährleistung der Thread-Sicherheit ist bei Zufallszahlen von entscheidender Bedeutung Generation. Die Zufalls-Engine von C 11 ermöglicht Thread-lokale Instanzen und stellt sicher, dass jeder Thread mit seiner eigenen, unabhängigen Folge von Pseudozufallszahlen arbeitet.
Verschiedenes
-
Gleichwahrscheinlich: Richtige Verteilungen stellen sicher, dass alle Ergebnisse innerhalb eines bestimmten Bereichs die gleiche Wahrscheinlichkeit haben Vorkommen.
-
Engines und Distributionen: Jede Engine gibt normalerweise einen empfohlenen Ergebnistyp für den Startwert an, z. B. MyRNG::result_type.
-
Ressourcen: Weitere Informationen finden Sie in externen Ressourcen wie dem Codeguru-Artikel über TR1-Zufallszahlen und der Wikipedia-Zusammenfassung zur Zufallszahlengenerierung Erkenntnisse.
Das obige ist der detaillierte Inhalt vonWie vereinfacht C 11 die Zufallszahlengenerierung mithilfe von Engines und Verteilungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!