作为一个云计算领域的专家,我可以告诉你,要从C#中的List <T>中选择N个随机元素,可以使用以下方法:
以下是一个示例代码:
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);
}
}
使用示例:
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个随机元素。
DBTalk技术分享会
云+社区技术沙龙[第8期]
云+社区技术沙龙[第15期]
云+社区技术沙龙[第6期]
Elastic 中国开发者大会
腾讯技术开放日
T-Day
技术创作101训练营
领取专属 10元无门槛券
手把手带您无忧上云