Maison >développement back-end >C++ >Comment puis-je implémenter l'algorithme Fisher-Yates Shuffle pour mélanger un jeu de cartes en C# ?
Mélange de cartes en C# à l'aide de l'algorithme de Fisher-Yates
Dans cet effort de programmation, nous visons à mélanger un jeu de cartes autant de fois que possible souhaité par l'utilisateur. Cela implique de créer une méthode qui utilise la classe System.Random pour générer des entiers aléatoires et d'implémenter l'algorithme de lecture aléatoire de Fisher-Yates.
Structure du programme existant :
Votre code fourni se compose de plusieurs classes, dont Program.cs, Deck.cs, Enums.cs et Card.cs. Ces classes définissent la structure de votre jeu de cartes.
Algorithme de mélange de cartes :
Pour implémenter un algorithme de mélange bien connu connu sous le nom de mélange Fisher-Yates, nous allons ajoutez une nouvelle classe statique appelée FisherYates. Cette classe contient la méthode suivante :
static public void Shuffle(int[] deck) { for (int n = deck.Length - 1; n > 0; --n) { int k = r.Next(n+1); int temp = deck[n]; deck[n] = deck[k]; deck[k] = temp; } }
Dans cette méthode, nous générons un index aléatoire k compris entre 0 et n et échangeons les éléments aux indices n et k. Ce processus est répété pour chaque élément du deck, mélangeant efficacement les éléments.
Intégration dans votre code :
Pour intégrer la méthode shuffle dans votre code, vous pouvez utilisez les étapes suivantes :
int[] deck_ints = new int[52]; for (int i = 0; i < deck_ints.Length; i++) { deck_ints[i] = i; } int num_shuffles = int.Parse(Console.ReadLine());
FisherYates.Shuffle(deck_ints);
En suivant ces étapes, vous pouvez mélanger efficacement un jeu de cartes autant de fois que spécifié et affichez le jeu mélangé comme vous le souhaitez.
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!