shuffle(随机重新排列)一个List <string> </string>

时间:2011-03-21 20:48:25

标签: c# algorithm random

我需要重新排列我的List数组,它中包含不可确定数量的元素。

有人可以举例说明我是怎么做的,谢谢

2 个答案:

答案 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;
        }
    }