Algoritmia básica, compañero
......
Primero, para rellenar o iniciar la matriz (perdón si me equivoco, esto lo hago a memoria):
for(Fi=0; Fi < mat.length; Fi++) {
for(Co=0; Co < mat[Fi].length; Co++) {
mat[Fi][Co] = 0;
}
}
Segundo, para determinar una posición,
ceil (x / 3), donde
1 <= x <= 9, te da la fila de una matriz (un número en el rango de 1 a 3), y
x % 3 te da la columna de una matriz (un número en el rango de 0 a 2, por si no conoces la operación es el famoso módulo, que es el cálculo del residuo de una división); por ejemplo, si el valor aleatorio te da 5,
ceil(5/3)=2, eso te indica que el número está en la fila 2 contando las filas del 1 al 3, y
5%3=2, que te indica la columna 2, contando como el caso anterior (en caso de que el módulo sea 0, esa sería en realidad la posición 3); a partir de lo anterior, deduces que la posición 5 equivale a matriz[2][2], que en la práctica es matriz[1][1]. Esta lógica la puedes aplicar en el momento en que ubiques al submarino o para que el jugador determine la posición del mismo.