Sie suchen nach einer Methode zur gleichmäßigen Generierung von Zufallszahlen innerhalb eines bestimmten Bereichs [Min., Max.].
Fehler bei rand
Ihre aktuelle Implementierung mit rand() und dem Modulo-Operator gewährleistet möglicherweise keine gleichmäßige Verteilung, da ihr Verhalten davon abhängt auf RAND_MAX und dem Bereich selbst.
C 11 und Uniform Range Generation
In C 11 bietet std::uniform_int_distribution eine auf diesen Bedarf zugeschnittene Lösung:
#includestd::uniform_int_distribution distr(min, max); std::random_device rand_dev; std::mt19937 generator(rand_dev()); int random_number = distr(generator);
Zusätzliche Funktionen von
Der
Container Mischen
Um einen Container zu mischen, verwenden Sie std::shuffle:
#include#include std::vector vec = {4, 8, 15, 16, 23, 42}; std::random_device random_dev; std::mt19937 generator(random_dev()); std::shuffle(vec.begin(), vec.end(), generator);
Boost.Random
Wenn die Verwendung eines C 11-Compilers nicht möglich ist , denken Sie an Boost.Random, das über eine ähnliche Schnittstelle wie das C 11-Gegenstück verfügt.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3