按照random随机给出的index,进行两两交换,当然也存在与上一次一样的数组结果。官方还有一种ICompare的比较器,只是打乱顺序这个没用起来,不知道该怎么搞,╮(╯_╰)╭
public static List<T> SortRandom<T>(this List<T> collection) { for (int i = collection.Count - 1; i > 0; i--) { Random rand = new Random(); int p = rand.Next(i); var temp = collection[p]; collection[p] = collection[i]; collection[i] = temp; } return collection; }
事务处理,不过这个返回结果好像不怎么对
var arr = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; arr.Sort(delegate(int a, int b) { return (new Random()).Next(-1, 1); });