int *generati conterrà i numeri generati (dovrebbero essere massimo 12??).

Allochi lo spazio: generati = (int*) malloc(12*sizeof(int));
quando invochi la funzione di generazione dei numeri casuali, inserisci in generati[i] il valore e incrementi la i. Alla nuova generazione devi fare un ciclo sull'array "generati", confrontando il numero appena creato con tutti i valori che hai già inserito nell'array.

In pseudocode:

codice:
numero_rand = genero_numero_casuale; 
for(i=0;i<13;i++)
   if(numero_rand == generati[i]){
          genera_altro_numero; 
          ripeti_controllo;
    }