用 C# 洗牌
创建一个可以洗牌的程序需要实现洗牌算法。 Fisher-Yates 洗牌算法是一种广泛使用的技术,可确保给定列表的随机排列。
要在 C# 中实现此算法,请考虑以下步骤:
创建 Fisher-Yates Shuffle 类:
定义一个名为的静态类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; } }
在此方法中:
打乱Deck:
在你的 Deck 类中,创建一个方法来调用卡片数组(卡片)上的 FisherYates.Shuffle() 方法:
public void Shuffle() { FisherYates.Shuffle(cards); }
更新程序:
在 Main() 方法中在您的程序类中,显示初始卡片列表后,询问用户他们想要洗牌的次数。然后,调用牌组上的 Shuffle() 方法指定次数:
Console.WriteLine("How Many Times Do You Want To Shuffle?"); int numShuffles = int.Parse(Console.ReadLine()); for (int i = 0; i < numShuffles; i++) { mydeck.Shuffle(); }
显示洗好的牌:
最后,再次迭代这副牌中的牌并显示洗后的牌顺序:
foreach (Card c in mydeck.Cards) { Console.WriteLine(c); }
按照以下步骤,您可以创建一个程序,可以根据用户所需的洗牌次数来洗牌一副牌,并显示洗好的牌。
以上是如何在 C# 中实现 Fisher-Yates 洗牌来随机化一副牌?的详细内容。更多信息请关注PHP中文网其他相关文章!