No.
Creo que el se refiere a que los numeros queden en posiciones aleatorias de la matriz, pero siempre del 1 al 18.
En ese caso debe utilizar random para calcular la posicion de la matriz.
Esta, al inicio debe tener valore invalidos para que antes de asignar, primero vea que no ha asignado algo en esa posicion.
algo así como :
int val = 1; i, j;
for (i = 0; i < MAX_I; i++) {
for (j = 0; j < MAx_J; j++)
matriz[i][j] = -1;
}
while (val < 19) {
i = random(MAX_I) + 1;
j = random(MAX_J) + 1;
if (matriz[i][j] == -1)
matriz[i][j] = val++;
}
SUERTE...