随机排序IEnumerable<>是指对一个IEnumerable<>集合进行随机排序,使得集合中的元素顺序随机且不重复。以下是一个完善且全面的答案:
要随机排序IEnumerable<>,可以使用Fisher-Yates随机排序算法。该算法的基本思想是,从原始集合中随机选择一个元素,将其与集合中的最后一个元素交换,然后将集合长度减1,重复该过程,直到集合长度为1。以下是一个C#实现:
using System;
using System.Collections.Generic;
using System.Linq;
public static class EnumerableExtensions
{
public static IEnumerable<T> Shuffle<T>(this IEnumerable<T> source)
{
Random rng = new Random();
T[] elements = source.ToArray();
int n = elements.Length;
while (n > 1)
{
n--;
int k = rng.Next(n + 1);
T temp = elements[k];
elements[k] = elements[n];
elements[n] = temp;
}
return elements;
}
}
使用该扩展方法,可以对任何IEnumerable<>集合进行随机排序。例如:
int[] numbers = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
IEnumerable<int> shuffledNumbers = numbers.Shuffle();
foreach (int number in shuffledNumbers)
{
Console.WriteLine(number);
}
这个答案涵盖了以下知识点:
推荐的腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云