C# 中的洗牌
在 C# 中,您可以使用 Fisher-Yates shuffle 实现洗牌算法。以下是如何增强代码以根据用户输入洗牌:
在 Program.cs 中,添加以下逻辑:
int timesToShuffle; Console.WriteLine("How many times do you want to shuffle?"); timesToShuffle = Convert.ToInt32(Console.ReadLine()); for (int i = 0; i < timesToShuffle; i++) { FisherYates.Shuffle(mydeck.Cards); }
此代码检索所需的用户输入洗牌次数,然后将 Fisher-Yates 洗牌算法多次应用于牌组的 Cards 数组。
在 FisherYates 类中,实现以下方法:
public static 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; } }
此方法采用代表一副牌的整数数组,并应用 Fisher-Yates 洗牌算法来随机化其顺序。
洗牌完成后,您可以像最初一样通过迭代 mydeck.Cards 来列出洗过的牌。现在将根据指定的次数洗牌。
以上是我应该使用 C# 中的 Fisher-Yates 算法洗牌多少次?的详细内容。更多信息请关注PHP中文网其他相关文章!