Mélanger un jeu de cartes

Je fais une classe Deck pour un programme C ++. Il doit y avoir deux méthodes: une pour faire sortir une carte du dessus du paquet, une autre pour mélanger le paquet. Je suis concerné par ce dernier.

Les cartes sont représentées par les nombres entiers de 1 à 52 inclus. Quel est l’algorithme le plus rapide pour mélanger le jeu (en supposant un «bon» niveau d’aléatoire)?

Si vous souhaitez mettre en œuvre le remaniement vous-même, un algorithme de réarrangement très simple mais également fonctionnel: le mélange aléatoire de Fisher – Yates .

Pour mélanger un tableau de n éléments:

for i from n − 1 downto 1 do j ← random integer with 0 ≤ j ≤ i exchange a[j] and a[i] 

Bien entendu, la bibliothèque standard C ++ a également implémenté des éléments tels que celui-ci, tels que std::random_shuffle , inclus via l’ tête .

Utilisez std::random_shuffle pour mélanger le paquet.