首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何随机排序IEnumerable <>?

随机排序IEnumerable<>是指对一个IEnumerable<>集合进行随机排序,使得集合中的元素顺序随机且不重复。以下是一个完善且全面的答案:

要随机排序IEnumerable<>,可以使用Fisher-Yates随机排序算法。该算法的基本思想是,从原始集合中随机选择一个元素,将其与集合中的最后一个元素交换,然后将集合长度减1,重复该过程,直到集合长度为1。以下是一个C#实现:

代码语言:csharp
复制
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<>集合进行随机排序。例如:

代码语言:csharp
复制
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);
}

这个答案涵盖了以下知识点:

  • 随机排序IEnumerable<>的基本概念和算法
  • C#语言的扩展方法
  • 随机数生成器的使用
  • 集合的遍历

推荐的腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

3分18秒

如何深度理解排序算法(一)

11分49秒

1.尚硅谷全套JAVA教程--基础必备(67.32GB)/尚硅谷Java入门教程,java电子书+Java面试真题(2023新版)/08_授课视频/44-流程控制-如何获取一个随机数.mp4

领券