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
Libérer: 2025-01-05 05:31:38
original
307 Les gens l'ont consulté

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;
    }
}
Copier après la connexion

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());
Copier après la connexion
  • 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);
Copier après la connexion
  • 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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal