Originariamente inviato da fabiospecial
Salve a tutti,
Ho un problema, sto sviluppando un progetto per l'esame di programmazione, e devo generare delle matrici, con numeri pseudocasuali non ripetuti. I numeri devono essere nell'intervallo 1 a n^2.

codice:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
void main() {
  srand((unsigned int)time(0));
  
  int i, j, n=3; float m; m=pow((float)n,2);
  int matrice[3][3];

  for (i=0; i<n; i++) {
    for(j=0; j<n; j++) {
      matrice[i][j]=1+rand()%((int)m);   
      printf("%d ",matrice[i][j]);
    }
      printf("\n");
  }
}
Questo codice che ho sviluppato io mi riempe la matrice con numeri casuali ripetuti. Per il progetto a me serve che i numeri non si ripetano. Non ho idea di come implementarlo in C. C'è qualcuno che potrebbe adattare il controllo per non ripetere i numeri sul mio codice? Così capisco come fare.

Grazie in anticipo a tutti
Una soluzione semplice ma estremamente (!) inefficace é quella di salvare il numero casuale generato e confrontarlo con i precedenti. Se non esistono corrispondenze lo inserisci. Altrimenti termini il ciclo, ne crei un nuovo e ripeti l'operazione.