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; }