如何在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)
最