C# 中的洗牌
洗牌是紙牌遊戲中引入隨機性的一個重要方面。本文深入探討了 C# 中的洗牌主題,解決了需要根據使用者輸入重複洗牌的特定場景。
在提供的程式碼中,您已經定義了用來表示一副牌的類別、個人卡片和各種枚舉。要合併卡片洗牌,我們建議使用 Fisher-Yates 洗牌演算法,該演算法可以有效地隨機化集合中的元素。
以下是如何將Fisher-Yates 洗牌功能加入程式碼:
用於洗牌的輔助類別:
建立一個名為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; } } }
將洗牌應用到 Deck:
在您的 Program.cs 類別中,取得使用者想要的洗牌次數,並利用 FisherYates洗牌次數洗牌方法洗牌
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); }
利用 Fisher-Yates 洗牌演算法,您的程式現在可以按照使用者指定的次數洗牌並顯示洗牌後的牌組。
以上是如何在 C# 中根據使用者輸入有效率地多次洗一副牌?的詳細內容。更多資訊請關注PHP中文網其他相關文章!