what exactly do you mean? a matrix with random number of rows and columns? a matrix that contains random numbers? Both?
In order to work with a matrix with random number of rows and columns you need to know how to work with pointers, each dimension requires one star, so in a 2d matrix you would have int** array, after that call malloc() to allocate each dimension of the array. Some of the code below may now compile with older C compilers.
int** matrix = 0;
const int rows = 5;
const int cols = 10;
matrix = (int **)malloc(rows * sizeof(int *)); // allocate rows
// now allocate the columns
for(i = 0; i < rows; i++)
matrix[i] = (int *)malloc(rows * sizeof(int));