Mélange efficace d'un std::vecteur
Lors du mélange d'un std::vecteur, l'efficacité joue un rôle crucial. La méthode fournie utilisant un tableau intermédiaire et des connaissances spécifiques au type n'est pas optimale.
Approche C moderne
En C 11 et versions ultérieures, une approche plus efficace est disponible :
#include <algorithm> #include <random> auto rng = std::default_random_engine {}; std::shuffle(std::begin(cards_), std::end(cards_), rng);
Cette méthode utilise la fonction std::shuffle, qui randomise efficacement les éléments. N'oubliez pas de réutiliser l'instance rng sur plusieurs appels std::shuffle pour une randomisation cohérente.
Shuffling personnalisé
Si vous désirez des séquences aléatoires distinctes à travers les exécutions du programme, amorcez l'instance aléatoire moteur avec la sortie de std::random_device:
auto rd = std::random_device {}; auto rng = std::default_random_engine { rd() }; std::shuffle(std::begin(cards_), std::end(cards_), rng);
C 98 Approche
Pour C 98, la fonction std::random_shuffle reste applicable :
#include <algorithm> std::random_shuffle(cards_.begin(), cards_.end());
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!