bru*_*rux 21 c# random algorithm
我需要重新排列我的List数组,它中包含不可确定数量的元素.
有人能举例说明我是怎么做到的,谢谢
Dar*_*rov 59
List<Foo> source = ...
var rnd = new Random();
var result = source.OrderBy(item => rnd.Next());
Run Code Online (Sandbox Code Playgroud)
显然,如果你想要真正的随机性而不是伪随机数生成器,你可以使用RNGCryptoServiceProvider而不是Random.
kpr*_*bst 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;
}
}
Run Code Online (Sandbox Code Playgroud)