rand()函数的问题
											题目是写一个扑克牌的发牌程序,并按照打牌的规则对手中的牌排序输出。我设计成斗地主的发牌,想用rand函数来做。结果。。。。。。每位玩家手里都有好多炸弹。。。就像牌没有洗开一样。我实在是不清楚是我程序的问题,还是rand函数本身存在缺陷了。。求助啊。。。拜托各位了

程序代码:#include "stdio.h"
#include "stdlib.h"
#include "time.h"
///发牌函数/////////这里肯定有问题,不然不会满手的炸弹
void deal_poker(int num[],int poker[])
{
    int rand_num;
    for(int i=0;i<18;i++)
    {
        srand((int)time(0));
        rand_num=(rand())%15;
        while(4==num[rand_num])
        {
            srand((int)time(0));
            rand_num=(rand())%15;//对随机得到的数字所代表的牌已发出的情况进行处理
        }
        num[rand_num]++;
        switch(rand_num)//按照斗地主规则中牌的大小对poker赋值,以便排序
        {
        case 0:poker[i]=14;break;
        case 1:poker[i]=15;break;
        case 13:poker[i]=16;break;
        case 14:poker[i]=17;break;
        default:poker[i]=rand_num+1;break;
        }
    }
}
///排序函数
void rank(int poker[])
{
    int temp,k;
    for(int i=0;i<18;i++)
    {
        k=i;
        for(int j=i+1;j<18;j++)
        {
            if(poker[j]<poker[k])k=j;
        }
        if(k!=i)
        {
            temp=poker[k];
            poker[k]=poker[i];
            poker[i]=temp;
        }
    }
}
///输出函数
void print(int poker[])
{
    for(int i=0;i<18;i++)
    {
        switch(poker[i])
        {
        case 11:printf("%7s","J");break;
        case 12:printf("%7s","Q");break;
        case 13:printf("%7s","K");break;
        case 14:printf("%7s","Ace");break;
        case 15:printf("%7s","2");break;
        case 16:printf("%7s","Joker1");break;
        case 17:printf("%7s","Joker2");break;
        default:printf("%7d",poker[i]);break;
        }
        if(0==(i+1)%6)printf("\n");
    }
    printf("\n");
}
void main()
{
    char s;
    int num[15]={0};//记录每种牌的个数(为了区分大小王所以用了15个种类)
    int poker[18]={0};//记录手牌
    num[13]=3;
    num[14]=3;
    printf("说明:\n手牌按照多地主的规则从小到大排序Joker1代表大王,Joker2代表小王,请输入s开始发牌\n");
    while(EOF!=scanf("%c",&s))
    {
        for(int i=0;i<3;i++)
        {
            printf("玩家%d的手牌:\n",i+1);
            deal_poker(num,poker);
            rank(poker);
            print(poker);
        }
    }
}										
					
	


											
	    

	