如何在C#中随机打乱List<T>列表?
大家好!我是一名C#初学者,遇到了一个问题。我需要随机打乱`List`列表中的元素。我正在编写一个纸牌游戏应用,需要洗牌。
我有一个`List deck`列表,里面装满了牌。我尝试过使用`Random`,但没能正确打乱元素。
以下是我当前的代码:
```csharp
List numbers = new List { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
Random rnd = new Random();
// 我尝试打乱
for (int i = 0; i < numbers.Count; i++)
{
int randomIndex = rnd.Next(numbers.Count);
numbers[i] = numbers[randomIndex]; // 这只是复制值,而不是交换
}
```
我明白这段代码是错误的——我丢失了元素的值,而不是交换它们。请告诉我如何正确实现列表打乱?最好用简单高效的方法。谢谢!
*P.S. 我听说过Fisher-Yates算法,但不确定*