Avatar ·

如何在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算法,但不确定*