[Duda programación] Generador de matrices cuadradas en C

Hola a tod@s.
Como bien dice el título he tengo una duda con la generación de matrices en C.

El problema es que tengo que crear un generador de matrices cuadradas en C, de tal manera que yo introduzca la dimensión de esta y me debe devolver dicha matriz NxN.

Todo esto es para luego hacer un multiplicador de matrices, que ya lo tengo hecho, y medir el tiempo que tarda en multiplicarlo.
Luego hacer lo mismo aplicando paralelización y hacer un estudio de que código merece más la pena y para que caso.

Pero claro, el generador de matrices es el que me está amargando. Ya que tengo que hacer matrices de 100x100, 1000x1000, 100000x100000, etc...

Sé que hay muchas maneras.Leyendo desde un fichero, generando dicha matriz, metiendo a mano los datos, etc.
Pero lo malo es que en C ando escaso de conocimientos. En mi universidad se centra mucho más en Java y claro luego cuando te piden C.... [fiu]

Un saludo y gracias de ante mano
¡Muy buenas!
Pues básicamente necesitas hacer uso de la función rand()
Yo te voy a dar la idea que se me ha venido a la mente para hacerlo sencillo.
Reservas un tamaño de matriz muy grande y generas aleatoriamente su "pseudotamaño". Es decir, generas el número que utilizarás en los bucles para recorrer la matriz (al ser cuadradada, este numero será i y j).
Luego simplemente cada elemento debes generarlo también con rand.
Si quieres acotar los numeros por ejemplo, puedes usar una función como esta:
int numaleatorio(int minimo, int maximo) {
    return minimo + rand() % (maximo - mininimo + 1)
}


Espero que te sirva.
La manera de hacer array multidimensionales en C de tamaño no fijo es con malloc.
En este caso si queremos una matriz de tamaño filas x columnas seria así.

Int** array;
Int numFilas,numColumnas;

Scanf("%d",&numFilas);
Scanf("%d",numColumnas);
Array= malloc(numFilas * sizeof(int *));
For (int i=0;i<numFilas;i++){
Array[i]=malloc(numColumnas * sizeof(int));
}

Con esto creariamos la matriz para llenarla seria con dos bucles for anidados y ya estaría en principio.
2 respuestas