Heim >Backend-Entwicklung >C++ >Wie kann ich in C wirklich erwartungstreue zufällige ganze Zahlen generieren?
Unvoreingenommene Generierung zufälliger Ganzzahlen mit std::random_device
Beim Streben nach der Generierung gleichmäßig verteilter Zufallszahlen rühren die anfänglichen Bedenken von den Mängeln her der Verwendung von rand(). Um diese Probleme anzugehen, bietet die C-Standardbibliothek eine robustere und effizientere Lösung.
Die Grundlage der Zufallszahlengenerierung liegt in der Verwendung einer Zufallszahlen-Engine, die mit einer externen Quelle gesät wird. In diesem Fall dient std::random_device als Seeding-Mechanismus und stellt einen nicht deterministischen Anfangswert bereit, der zum Generieren nachfolgender Zufallszahlen verwendet wird.
Die bevorzugte Wahl für die Zufallszahlen-Engine ist std::mt19937 , unter Verwendung des Mersenne-Twister-Algorithmus. Diese Engine weist hervorragende statistische Eigenschaften auf und hat sich als äußerst leistungsfähig erwiesen.
Um unverzerrte Zufallszahlen innerhalb eines bestimmten Bereichs zu generieren, verwenden wir std::uniform_int_distribution. Diese Verteilung stellt sicher, dass alle Werte innerhalb des Bereichs mit gleicher Wahrscheinlichkeit ausgewählt werden.
Der folgende Code fasst diese Konzepte zusammen:
#include <random> std::random_device rd; std::mt19937 rng(rd()); std::uniform_int_distribution<int> uni(min, max); auto random_integer = uni(rng);
Durch die Verwendung dieses Ansatzes können Entwickler auf die Einheitlichkeit vertrauen ihrer zufällig generierten Ganzzahlen, wodurch mögliche Verzerrungen beseitigt und zuverlässige und vorhersehbare Ergebnisse gewährleistet werden.
Das obige ist der detaillierte Inhalt vonWie kann ich in C wirklich erwartungstreue zufällige ganze Zahlen generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!