可以自己写一个
 /// <summary>
        /// 随机排序
        /// </summary>
        /// <param name="arry"></param>
        /// <returns></returns>
        public static int[] RandSort(int[] arry)
        {
            int[] arryNew = new int[arry.Length];
            Random rnd = new Random();
            int n = arry.Length;
            int i = 0;
            while (n > 0)
            {
                int index = rnd.Next(n);
                arryNew[i] = arry[index];
                arry[index] = arry[n-1];
                n--;
                i++;
            }            return arryNew;        }//调用
int[] arry = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int[] arryRes = RandSort(arry);

解决方案 »

  1.   

    如果要扩展到其他类型的数组队列,可以用泛型
    //任意类型的队列随机排序
     public static T[] RandSort<T>(T[] arry)
            {            
                T[] arryNew = new T[arry.Length];
                Random rnd = new Random();
                int n = arry.Length;
                int i = 0;
                while (n > 0)
                {
                    int index = rnd.Next(n);
                    arryNew[i] = arry[index];
                    arry[index] = arry[n - 1];
                    n--;
                    i++;
                }            return arryNew;        }//调用
    string[] sArray = new string[] { "ab", "fs", "ta", "ds", "gd", "fafd" };
    string[] sArrayRes = RandSort<string>(sArray);
      

  2.   

    这一类的我找到很多了,都不符合皮尔逊检验。
    我想找的是类似java 里面, Collections.Shuffle的方法,听说.net里面有这样的方法,而且符合皮尔逊算法,C值可以达到0.05的卡方值的程度
      

  3.   


    Random r = new Random((int) DateTime.Now.Ticks);
                var list = Enumerable.Range(0, 99).ToList();
                list.Sort((x, y) => r.Next(-1,1));//这一句就行了
                list.ForEach(x=>Console.Write(x+"\t"));
                Console.Read();
      

  4.   


    list.Sort((x, y) => r.Next(-1,1));这句是什么意思?不是C#代码阿,能解释一下吗?
      

  5.   

    随机生成-1 至1的值返回给Sort
      

  6.   

    用linq试试,arr = arr.OrderBy(x => rnd.Next())
      

  7.   

    抽了一下,这样也行,如7楼Random r = new Random((int) DateTime.Now.Ticks);
                Enumerable.Range(0, 99).OrderBy(x=>r.Next()).ToList().ForEach(x=>Console.Write(x+"\t"));
                //list.Sort((x, y) => r.Next(-1,1));
                //list.ForEach(x=>Console.Write(x+"\t"));
                Console.Read();
      

  8.   


    当数组比较大时,运行几次会报错“无法排序,原因是 IComparer.Compare() 方法返回不一致的结果。一个值与本身比较不相等,或者一个值与另外一个值重复比较生成不同的结果。x:“0”,x 的类型:“Int32”,IComparer:“”。”
      

  9.   

    请教楼主你说的这个符合皮尔逊检验的是指c#里面的Random()函数么?谢谢
      

  10.   


    当数组比较大时,运行几次会报错“无法排序,原因是 IComparer.Compare() 方法返回不一致的结果。一个值与本身比较不相等,或者一个值与另外一个值重复比较生成不同的结果。x:“0”,x 的类型:“Int32”,IComparer:“”。”
    请问一下,我做排序的时候也出现这个报错。是因为数组比较大吗?那怎么解决呢?