首先取一个1到n-1之间的随机数做为索引,然后到已经排列好顺序的数组中取出该索引的数据,放入另一个数组中,然后把这个随机数放入第三个数组中,再去一个随机数1到n-1,首先和第三个数组中数据比较是否已经被取过了,如果没有,就到排列好顺序的数组中取出该索引的数据,放入另一个数组中......依此类推,取处所有数组为止。

解决方案 »

  1.   

    private void ShuffleArray(Array array)
    {
    Random r = new Random(DateTime.Now.Second);
    for (int i = 0; i < array.Length; i ++)
    {
    int src = r.Next(array.Length), tar = r.Next(array.Length);
    Object tmp = array.GetValue(src);
    array.SetValue(array.GetValue(tar), src);
    array.SetValue(tmp, tar);
    }
    }
      

  2.   

    或者用简单的洗牌方法,随机抽两张,调换位置,重复一定次数