Maison > développement back-end > C++ > Comment puis-je mélanger efficacement un jeu de cartes en C# en fonction des mélanges spécifiés par l'utilisateur ?

Comment puis-je mélanger efficacement un jeu de cartes en C# en fonction des mélanges spécifiés par l'utilisateur ?

Linda Hamilton
Libérer: 2025-01-03 13:10:38
original
338 Les gens l'ont consulté

How can I efficiently shuffle a deck of cards in C# based on user-specified shuffles?

Mélange de cartes en C#

Un exercice de programmation courant consiste à écrire une simulation de mélange de cartes dans un langage donné. Cette question explore le mélange d'un jeu de cartes et l'interrogation de l'utilisateur sur le nombre de mélanges.

Énoncé du problème

Le code fourni comprend des classes pour un jeu, une carte et costume, ainsi qu'un programme pour afficher l'ordre initial des cartes et prendre en compte les données de l'utilisateur sur le nombre de mélanges. Le défi réside dans la mise en œuvre du mécanisme de brassage.

Solution

Le mélange Fisher-Yates, également connu sous le nom de mélange Knuth, est un algorithme largement utilisé pour mélanger un tableau. en place. Le code mis à jour intègre cet algorithme :

classe publique statique FisherYates<br>{</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">static Random r = new Random();
Copier après la connexion

  static public void Shuffle(Card[] deck)</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">{
    for (int n = deck.Length - 1; n > 0; --n)
    {
        int k = r.Next(n+1);
        Card temp = deck[n];
        deck[n] = deck[k];
        deck[k] = temp;
    }
}
Copier après la connexion

}

Cette classe définit une méthode statique, Shuffle, qui prend un tableau de cartes comme saisir. Il parcourt ensuite le jeu dans l'ordre inverse, en sélectionnant une carte aléatoire à échanger avec la carte actuelle. En itérant sur l'ensemble du deck, l'algorithme garantit un mixage minutieux.

Implémentation

Pour incorporer le shuffle dans le code d'origine, ajoutez un appel à la méthode Shuffle dans le fichier Méthode principale de la classe Program après obtention du nombre de lectures aléatoires de l'utilisateur :

Deck myDeck = new Pont(); // Créer un nouveau deck<br>int numShuffles = Int32.Parse(Console.ReadLine()); // Lire les entrées de l'utilisateur sur les mélanges souhaités<br>FisherYates.Shuffle(myDeck.Cards); // Mélangez le jeu le nombre de fois souhaité<br>pour chaque (Carte c dans myDeck.Cards) // Imprimez le jeu mélangé<br>{</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">Console.WriteLine(c);
Copier après la connexion

}

Conclusion

L'intégration de l'algorithme de lecture aléatoire Fisher-Yates permet une mélange du jeu de cartes et satisfait à l'exigence de nombre de mélanges spécifié par l'utilisateur. Le code génère le jeu mélangé comme demandé.

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
Article précédent:Comment les HashCodes identifient-ils de manière unique les objets dans la programmation ? Article suivant:La division en virgule flottante est-elle toujours plus lente que la multiplication ?
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
Derniers articles par auteur
Derniers numéros
Rubriques connexes
Plus>
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal