Matriz de randoms

Imaginemos que nos piden:
"Escriba un programa que llene una matriz de 20x20 elementos con números aleatrios en 1 y 10. Después que cuente la distribución de números de la matriz y la apunte en un vector de 10 posiciones. Finalmente, imprima la distribución por pantalla."

El ejemplo es sencillo pero nos permitirá trabajar con matrices, vectores y números aleatorios.

El código es el siguiente:

#include <iostream>
#include <stdlib.h>  //Este include es para  la llamada a system("pause")
#include <time.h>

#define SIZE 20
#define MAX_RANDOM 10

int main(int argc, char** argv)
{
 int i,j;
 char matriz[SIZE][SIZE];
 int vector[MAX_RANDOM];

 //Limpiamos el vector de contaje
 for(i = 0 ; i < MAX_RANDOM ; ++i)
  vector[i] = 0;
 
 //Inicializamos el random
 srand(time(0));
 
 //Generamos la matriz de números aleatorios
 for( i = 0 ; i < SIZE ; ++i )
 {
  for(j = 0 ; j < SIZE ; ++j)
  {
   matriz[i][j] = rand()%MAX_RANDOM + 1 ;
  }
 }

 //contamos las distribuciones de random
 for( i = 0 ; i < SIZE ; ++i )
 {
  for(j = 0 ; j < SIZE ; ++j)
  {
   vector[ matriz[i][j]-1 ]++;
  }
 }

 std::cout << "Distribucion de random en un matriz de enteros entre 1 y 10" << std::endl;
 for( i = 0 ; i < MAX_RANDOM ; ++i)
  std::cout << "V[" << i+1 << "] = " << vector[i] << std::endl;

 system("Pause");

 return 0;
}