c语言发牌问题,随机数问题

定义4个长度为13的一裝数组,设计电脑发牌程序,发出52张牌,输出发牌果。大于10的牌为J,Q,K,1为‘A’,每次运行发牌结果不能相同。

一个实现,供参考:


#include <stdio.h>
#include <stdlib.h> //提供rand()函数原型 
#include <time.h>  //提供time()函数原型 

//给每个玩家发牌 
void licensing(int * play){
        
    int i,j;
    srand(time(0)+rand()); //用当前时间再加随机数做随机数种子,以便让每一次随机不一样 
    //给玩家发牌 
    for(i=0;i<13;i++){                
        int num = rand()%13+1;  //rand()%13产生0~12的随机数, rand()%13+1产生1到13的随机数 
        //当产生的随机数 
        if(num==11){
            play[i]='J';
        }else if(num==12){
            play[i]='Q';
        }else if(num==13){
            play[i]='K';
        }else if(num==1){
            play[i]='A';
        }else if(num==10){ 
            play[i]=10;
        }else {
            play[i]=num+'0';
        }
        
    //    printf("num=%d,play[%d]=%c\n",num,i,play[i]);
    } 
}

//看牌 
void watchCards(int * play){
    int i;
    for(i=0;i<13;i++){
        if(play[i]==10){
            printf("%2d ",play[i]);
        }else{
            printf("%2c ",play[i]);
        }
    }
    printf("\n");
}


int main(void){
    
    int playA[13];
    int playB[13];
    int playC[13];
    int playD[13];
    
    //给四个玩家发牌 
    licensing(playA);    
    licensing(playB);
    licensing(playC);
    licensing(playD);
    
    printf("四个玩家的牌如下:\n");
    //看牌 
    watchCards(playA);
    watchCards(playB);
    watchCards(playC);
    watchCards(playD);
    

} 

img