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

从C#中的List <T>中选择N个随机元素

作为一个云计算领域的专家,我可以告诉你,要从C#中的List <T>中选择N个随机元素,可以使用以下方法:

  1. 使用Fisher-Yates随机置乱算法对List进行随机排序。
  2. 选择前N个元素。

以下是一个示例代码:

代码语言:csharp
复制
using System;
using System.Collections.Generic;

public static class ListExtensions
{
    public static void Shuffle<T>(this IList<T> list)
    {
        int n = list.Count;
        while (n > 1)
        {
            n--;
            int k = Random.Next(n + 1);
            T value = list[k];
            list[k] = list[n];
            list[n] = value;
        }
    }
}

public static class RandomExtensions
{
    private static readonly Random _random = new Random();

    public static int Next(this Random random, int maxValue)
    {
        return _random.Next(maxValue);
    }
}

public static class ListHelper
{
    public static List<T> GetRandomElements<T>(this List<T> list, int count)
    {
        list.Shuffle();
        return list.GetRange(0, count);
    }
}

使用示例:

代码语言:csharp
复制
List<int> list = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
List<int> randomElements = list.GetRandomElements(5);

这个方法可以在O(n)的时间复杂度内选择N个随机元素。

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

相关·内容

领券