Fisher-Yates アルゴリズムを使用した C# でのカード シャッフル
このプログラミングの取り組みでは、トランプのデッキを何回もシャッフルすることを目指しています。ユーザーが望むもの。これには、System.Random クラスを利用してランダムな整数を生成するメソッドの作成と、Fisher-Yates シャッフル アルゴリズムの実装が含まれます。
既存のプログラム構造:
提供されたコードProgram.cs、Deck.cs、Enums.cs、Card.cs などの複数のクラスで構成されます。これらのクラスは、カード ゲームの構造を定義します。
カード シャッフル アルゴリズム:
フィッシャー・イェーツ シャッフルとして知られるよく知られたシャッフル アルゴリズムを実装するには、次のようにします。 FisherYates という新しい静的クラスを追加します。このクラスには次のメソッドが含まれています:
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; } }
このメソッドでは、0 から n の範囲内でランダムなインデックス k を生成し、インデックス n と k の要素を交換します。このプロセスはデッキ内の要素ごとに繰り返され、要素が効果的にシャッフルされます。
コードへの統合:
シャッフル メソッドをコードに統合するには、次のことができます。次の手順を使用します。
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());
FisherYates.Shuffle(deck_ints);
これらの手順に従うことで、カードのデッキを効果的にシャッフルできます指定した回数だけシャッフルされたデッキを表示します。
以上がC# でカードの山をシャッフルするフィッシャー・イェーツのシャッフル アルゴリズムを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。