经典洗牌算法(Knuth-Durstenfeld Shuffle)

有衣服54张的扑克牌,那么它有54!种排列算法。

代码如下:

void shuffle(int *a, int n)
{
    for(int i = 0; i < n; ++i)
        swap(a[i], a[randint(i,n-1)];
}
randint函数的实现:

int randint(int i, int j)
{
    if(i < j)
        swap(i, j);
    return i+rand() % (j-i+1);
}



你可能感兴趣的:(经典洗牌算法(Knuth-Durstenfeld Shuffle))