Avatar ·

如何在C#中随机打乱List<T>列表?

大家好!我是C#新手,正在编写一个卡牌游戏的小应用。我有一个列表(List),里面包含一副牌。我需要在发牌前随机打乱这些牌,但找不到像List.Shuffle()这样的内置方法。 这是我的代码: ```csharp List deck = new List(); // ... 用牌填充牌组 ... // 现在如何打乱?我试过: deck.OrderBy(x => random.Next()).ToList(); // 但这返回一个新列表,而不是修改原列表 ``` 问题是我想要修改原列表deck,而不是创建一个新的。此外,我读到使用Random与OrderBy可能导致分布不均匀,甚至如果random.Next()为多个元素返回相同值,可能会引发异常。 请告诉我如何正确且高效地原地打乱List?最好有代码示例。提前感谢! <<>>

最佳方法:Fisher-Yates算法(Knuth shuffle)

最