我需要重新排列我的List数组,它中包含不可确定数量的元素。
有人可以举例说明我是怎么做的,谢谢
答案 0 :(得分:59)
List<Foo> source = ...
var rnd = new Random();
var result = source.OrderBy(item => rnd.Next());
显然,如果你想要真正的随机性而不是伪随机数生成器,你可以使用RNGCryptoServiceProvider代替Random。
答案 1 :(得分:20)
这是一种随机播放List<T>
:
public static void Shuffle<T>(this IList<T> list) {
int n = list.Count;
Random rnd = new Random();
while (n > 1) {
int k = (rnd.Next(0, n) % n);
n--;
T value = list[k];
list[k] = list[n];
list[n] = value;
}
}