Генерация чисел и отображение матрицы в консоли не правильно работают

Начал решать данную задачу:

Дана целочисленная матрица размера M × N. Найти номер последней из ее строк, содержащих максимальное количество одинаковых элементов.

Составил код, но когда происходит компиляция, генерация чисел везде заполняется нулями, и неправильно отображается матрица в консоли. Помогите пожалуйста найти ошибку и как исправить, чтобы код заработал правильно ?

import java.util.Random;

public class Main {

public static void main(String[] args) {
           Random rnd = new Random();  // Создаём экземпляр генератора случайных чисел(будем заполнять матрицу случайными числами)
        int n = 8, m = 9;     // Объявляем константы для задания размерности матрицы
         int [][]matrix = new int[n] [m];  // Создаём матрицу размерностью NxM
           int i, j, z, temp1 = 1, temp2 = 1, maxi = -1;             // Объявлем целочисленные переменные
           System.out.println("Рандомная матрица:");
           for (i = 0; i < n; i++)
           {
               for (j = 0; j < m; j++)
               {
                   matrix[i] [j] = (int) Math.random()*10;   // В цикле присваиваем каждому элементу матрицы случайное число
                   System.out.println("{0} "+ matrix[i] [j]);    // И сразу же выводим его в консоль 
               }
               System.out.println();
           }
           for (i = 0; i < n; i++)
           {
               for (j = 0; j < m-1; j++)
               {
                   z = j+1;
                   // В цикле сравниваем элемент matrix[i, j] с последующими в данной строке, если нашли одиноковый увеличиваем счётчик temp1 на единицу(количество одиноковых элементов)
                   while (z < m)
                   {
                       if (matrix[i] [j] == matrix[i] [z])
                       {
                           temp1++;
                       }
                       z++;
                   }
               }
               // Если в данной строке одинаковых элементов больше чем в предыдущих запоминаем индекс данной строки
               if (temp1 > temp2)
               {
                   temp2 = temp1;
                   maxi = i;
               }
               temp1 = 1;
           }
           // Вывод ответа с индексом строки содержащей максимальное количество одинаковых элементов
           if (maxi == -1)
           {
               System.out.println("Строк с одинаковыми элементами не существует");
           }
           else
           {
              System.out.println("Индекс строки с максимальным количеством одиноковых элементов: {0}" + maxi);
           }
           System.out.println();
       }
   }

[![Что выходит][1]][1]


 [1]: https://i.stack.imgur.com/zy5lY.png

Ответы (1 шт):

Автор решения: стасевич

Math.random() генерирует числа от 0 до 1 (не включая 1) например
0.777328667250996
0.49824728555371

   matrix[i] [j] = (int) Math.random()*10; 

следовательно (int) Math.random()*10 всегда будет 0.

пробуй так (int) (Math.random() * 10)

создал рандом и не используешь Random rnd = new Random();

rnd.nextInt(2) будет генерировать 2 числа - 0,1
rnd.nextInt(10)будет генерировать 10 чисел -от 0 до 9(включительно)
(rnd.nextInt(10)+1) - числа от 1 до 10(включительно)

→ Ссылка