eg:A[0,1,2,3,4,5,6,7];   函数rand()用来生成随机数组下标

for(int i = 0; i < n;i++)

{

  int j = rand()%(n-i)+i;  //j = [i..n]

  A[i]^=A[j]^=A[i]^=A[j];

}

//从i=0开始,随机产生i..n中的一个数j,将A[i]和A[j]交换。

//因为i是递增的,j=rand(i..n),避免了i和j重复的可能。