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# ?

Comment puis-je implémenter l'algorithme Fisher-Yates Shuffle pour mélanger un jeu de cartes en C# ?

DDD
DDDoriginal
2025-01-05 05:31:38281parcourir

How Can I Implement the Fisher-Yates Shuffle Algorithm to Shuffle a Deck of Cards in 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 :

  1. Dans Program.cs, ajoutez les lignes suivantes à la fin du Main méthode :
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());
  • Ceci lit le nombre de mélanges de l'utilisateur et initialise le deck sous la forme d'un tableau d'entiers.
  1. Dans Deck .cs, ajoutez la ligne suivante aux ShuffleCards méthode :
FisherYates.Shuffle(deck_ints);
  • Cela mélange le jeu à l'aide de l'algorithme de Fisher-Yates.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn