Im berühmten Vortrag „rand() Considered Harmful“ unter Verwendung der Engine-Distribution Das Paradigma für die Generierung von Zufallszahlen wird gegenüber der klassischen std::rand() plus Modul-Vereinfachung befürwortet.
Um die aufgestellten Behauptungen zu testen, wurde ein Experiment durchgeführt, bei dem std::rand() mit std::mt19937 plus std:: verglichen wurde. uniform_int_distribution wurde durchgeführt:
Überraschenderweise war die Gesamtverteilung der Rollen bei beiden Methoden gleich, was darauf hindeutet, dass std::mt19937 plus std::uniform_int_distribution keine zusätzliche Einheitlichkeit lieferte. Allerdings war die neue Methode ungefähr viermal langsamer.
Obwohl dieses Experiment darauf hinzudeuten schien, dass std::rand() nicht unbedingt minderwertig ist, ist es wichtig, die inhärenten Einschränkungen von std::rand() zu berücksichtigen:
Im Gegensatz dazu ist das neue
In Bezug auf die Leistung wird empfohlen, dass std::minstd_rand ein geeigneter Ersatz für std sein könnte ::mt19937, wenn die LCG-Qualität ausreichend ist und möglicherweise eine bessere Geschwindigkeit bietet (insbesondere, wenn die Verteilungsanpassung mithilfe von uniform_int_distribution vermieden wird).
Letztendlich hängt die Wahl des Zufallszahlengenerators von den spezifischen Anforderungen der Anwendung ab, aber das Neue
Das obige ist der detaillierte Inhalt vonIst die neue Zufallsbibliothek wirklich besser als „std::rand()'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!