ホームページ > バックエンド開発 > C++ > ユーザー入力に基づいて C# でトランプのデッキを複数回効率的にシャッフルするにはどうすればよいですか?

ユーザー入力に基づいて C# でトランプのデッキを複数回効率的にシャッフルするにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-05 03:55:38
オリジナル
463 人が閲覧しました

How Can I Efficiently Shuffle a Deck of Cards Multiple Times in C# Based on User Input?

C# でのカード シャッフル

カード シャッフルは、カード ゲームにおいてランダム性を導入するための重要な側面です。この記事では、C# でのカード シャッフルのトピックを詳しく掘り下げ、ユーザー入力に基づいてデッキを繰り返しシャッフルする必要がある特定のシナリオに対処します。

提供されたコードでは、カードのデッキを表すクラスを定義しました。 、個々のカード、およびさまざまな列挙。カードのシャッフルを組み込むには、コレクション内の要素を効率的にランダム化するフィッシャー・イェーツのシャッフル アルゴリズムを採用することをお勧めします。

フィッシャー・イェーツのシャッフル機能をコードに追加する方法は次のとおりです。

シャッフル用のヘルパー クラス:

静的ヘルパーを作成するFisherYates というクラスを使用して、シャッフル アルゴリズムを実装します。

static public class FisherYates
{
    static Random r = new Random();

    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;
        }
    }
}
ログイン後にコピー

デッキへのシャッフルの適用:

Program.cs クラスで、シャッフルの数を取得します。ユーザーはデッキをシャッフルするために FisherYates shuffle メソッドを使用したいと考えています

int numOfShuffles = int.Parse(Console.ReadLine());
for (int i = 0; i < numOfShuffles; i++)
{
    FisherYates.Shuffle(mydeck.Cards);
}
ログイン後にコピー

シャッフルされたカードの表示:

シャッフル後、更新されたシャッフルされたカードのデッキを表示できます。

foreach (Card c in mydeck.Cards)
{
    Console.WriteLine(c);
}
ログイン後にコピー

フィッシャー・イェーツのシャッフル アルゴリズムを利用することで、プログラムはユーザーの回数と同じ回数だけトランプのカードをシャッフルできるようになりました。シャッフルされたデッキを指定して表示します。

以上がユーザー入力に基づいて C# でトランプのデッキを複数回効率的にシャッフルするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート