给出洗牌的一个算法,并将洗好的牌存储在一个整形数组里
一共是54张牌,只要把这54张牌随意排列就行,需要使用随机产生54个数。
void main()
{
int a[54] ,i ,r ,tmp;
for(i = 0;i<54 ;i++)
{
a[i] = i; //初始化,给每个牌给不同的值
}
for(i = 0;i<54 ;i++)
{
r = rand()%54; //随机产生0~53之间的值
tmp = a[r]; //把下标为r的这个位置的纸牌给 tmp
a[r] = a[i]; // 把下标为i的这个位置的纸牌给下标为r位置的纸牌
a[i] = tmp; //把下标为r的这个位置上的纸牌给位置为i的纸牌
} //这样循环操作54次,保证54个位置上的纸牌都能变换,但是不保证和原来的不相同。
for( i = 0;i<54 ;i++)
{
printf("%2d\n ",a[i]);
}
}