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 サイトの他の関連記事を参照してください。