如何解决List <T>的随机副本[duplicate]
| 这个问题已经在这里有了答案:解决方法
您正在寻找Shuffle,那里有各种实现,通常是Fisher-Yates shuffle。
下面是从此处获取的通用实现:
public static void Shuffle<T>(this IList<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;
}
}
请注意,这将对列表进行重新排序,如果您要执行此操作,可以很容易地对其进行重构以返回新列表。
,public List<T> Random<T>(this IEnumerable<T> collection)
{
return collection.OrderBy(i => Guid.NewGuid()).ToList();
}
感谢Jeff Atwood提供的解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。