我有一个列表
我想重新订购它,以便它们按随机顺序排列。
最快的方式是什么(最快,我的意思是代码最少)
答案 0 :(得分:10)
注意:根据mquander的评论,以下答案不是推荐的执行“随机排序”的方法,因为它在语义上不正确,与接受的shuffle算法相比效率不高,它基于
Guid
s的私有实施细节, 甚至滥用LINQ查询语法。但是,它是“最少量的代码”(就自己编写而不是由框架处理而言) OP要求。
var randomOrdering = yourList.OrderBy(o => Guid.NewGuid());
答案 1 :(得分:5)
如果您想随机重新排序 ,您应该随机播放列表,使用扩展方法的用法就是一个简单的单行。这假设您已经拥有基于IList
的集合。
用法: myList.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;
}
}
归功于这个答案:Randomize a List<T>