vi posto questo programma dovrebbe generare dei semi e dei numeri casuale dato un certo numero di carte che decidiamo di dare a ogni mano..ma il metodo rand va oltre il range che gli do io..a me il massimo è 13 lui va anche a 100 ecc aiutatemi

codice:
#include<stdbool.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define NUM_SUITS 4
#define NUM_RANKS 13
int main(void){
    bool in_hand[NUM_SUITS][NUM_RANKS]={false};
    int num_cards,rank,suit;
    const char rank_code[]={'2','3','4','5','6','7','8','9','t','j','q','k','a'};
    const char suit_code[]={'c','d','h','a'};
    srand((unsigned)time(NULL));//serve per non generare sempre gli stessi numeri casuali
    printf("metti il numero di carte per mano");
    scanf("%d",&num_cards);
    printf("mano:\n");
    while(num_cards>0){
    suit=rand()%NUM_SUITS;//genera semi casuali da 1 a num_suits
    rank=rand()%NUM_RANKS;//sceglie un valore casuale massimo uguale al valore num_ranks
    if(!in_hand[suit][rank]){
    in_hand[suit][rank]=true;
    num_cards--;
    printf("%d %d\n",rank_code[rank],suit_code[suit]);
}
}
 printf("\n");
 system("PAUSE");
 return 0;
}