Java POO - Gerar número em posição aleatória na matriz

Boa Tarde,
Galera levando em conta uma matriz preenchida com zeros , como faço pra gerar um número em uma posição aleatória dentro dela.

E como poderia fazer uma função para movimentar esse número de uma forma aleatória?

Qual a estrutura da matriz? Supondo que os números se sobreponham, o que aconteceria?

Para criar números aleatórios:

Random r = new Random();
int numero = r.nextInt();
int c = r.nextInt(matriz.colunas);
int l = r.nextInt(matriz.linhas);
matriz.atribuir(l, c, numero);

Matriz de 30 linhas e 60 colunas , se sobrepor os 2 sumiram , ou seja ficaria 0

Para construir matriz aleatória

para fazer movimentar seria mais ou menos:

for (c = 0; c < qtdDeColunas; c++) {
  for (l = 0; l < qtdDeLinhas; l++) {
    numero = matriz[l][c];
    if (numero != 0) {
      direção = random.nextInt(4);
      switch(direcao) {
        // move para cima
        case 0: proximaColuna = c; proximaLinha = l - 1; break;
        // as outras direcoes
      }
      matriz[proximaLinha][proximaColuna] = numero;
      matriz[l][c] = 0;
    }
  }
}

Entendi , mas ainda to tentando dificuldade pra gerar .

Ficou assim meu codigo,porém não esta indo para uma posição aleatoria.
Como eu faço para eu gerar um x e y por exemplo que seria(Linhas e colunas) respectivamente que o numero deveria aparecer ?

public void gerarCarro(){
	c.add(new Carro()) //Adicionar Carro na arrayList
	for(int x = 0; x < matrix.length; x++){
		for (int i = 0; i < matrix[x].length; i++){
		  if(m[x][i]!= 0 && m[x][i]!=2 & m[x][i]!=1){ 
		    m[x][i]= 3;
		    break; // utilizei o break para ser um 3 apenas mas apareceu um monte kkk
		  }
	}


	}
public void gerarCarro(){
	c.add(new Carro()) //Adicionar Carro na arrayList
        boolean colocouTres = false;
	for(int x = 0; x < matrix.length && colocouTres == false; x++){
		for (int i = 0; i < matrix[x].length && colocouTres == false; i++){
		  if(m[x][i]!= 0 && m[x][i]!=2 & m[x][i]!=1){ 
		    m[x][i]= 3;
		    // break; // utilizei o break para ser um 3 apenas mas apareceu um monte kkk
                    colocouTres = true;
		  }
	}
}

Pode colocar uma variável de controle ou substitua o break; por return;