winform List顺序打乱
时间: 2023-12-06 16:02:41 浏览: 93
如果要在WinForm中打乱List的顺序,可以使用Fisher-Yates算法(也称为Knuth shuffle算法)。
以下是一个使用Fisher-Yates算法打乱List顺序的示例代码:
```csharp
private static void Shuffle<T>(List<T> list)
{
Random rng = new Random();
int n = list.Count;
while (n > 1)
{
n--;
int k = rng.Next(n + 1);
T value = list[k];
list[k] = list[n];
list[n] = value;
}
}
```
使用方式:
```csharp
List<int> myList = new List<int>() { 1, 2, 3, 4, 5 };
Shuffle(myList);
```
注意:这会改变List本身的顺序。如果您不想改变List,可以使用`OrderBy`方法来创建一个新的打乱顺序的List:
```csharp
List<int> myList = new List<int>() { 1, 2, 3, 4, 5 };
List<int> shuffledList = myList.OrderBy(x => Guid.NewGuid()).ToList();
```
阅读全文