Vous recherchez une méthode pour générer uniformément des nombres aléatoires dans une plage spécifiée [min, max].
Défauts avec rand
Votre implémentation actuelle utilisant rand() et l'opérateur module peut ne pas garantir une distribution uniforme, car son comportement dépend de RAND_MAX et du range elle-même.
C 11 et Uniform Range Generation
En C 11, std::uniform_int_distribution propose une solution adaptée à ce besoin :
#includestd::uniform_int_distribution distr(min, max); std::random_device rand_dev; std::mt19937 generator(rand_dev()); int random_number = distr(generator);
Fonctionnalités supplémentaires de
L'en-tête
Container Shuffling
Pour mélanger un conteneur, utilisez 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
Si l'utilisation d'un compilateur C 11 n'est pas réalisable , pensez à Boost.Random, qui présente une interface similaire à celle de son homologue C 11.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3