2017-01-14 1 views
-1

Как создать x y matrix (где x < = y) со случайными целыми числами (от 0 до 9), который имеет не менее x нулей и max (x y)/2 в java?Домашнее задание для заполнения макета со случайными значениями

Дано значение размера матрицы (x, y). Также я хотел бы знать, как использовать эту матрицу с одинаковыми целыми числами с одним и тем же индексом в другом классе (например, «public class Game {...}»). Я начинающий так пожалуйста, сделать его легким для меня :)

Мой код до сих пор:

import java.util.Random; 

public class Solution { 

    int a[][]; 

    public void P(int x, int y){ 
     Random r = new Random(); 
     a = new int[x][y]; 

     for (int i=0; i<x; i++){ 
      for (int j=0; j<y; j++){ 
       a[i][j] = r.nextInt(10); 
       System.out.print(a[i][j] + " "); 
      } 
      System.out.println(); 
     } 

     System.out.println(); 

     int zeros = 0; 
     for (int i=0; i<x; i++){ 
      for (int j=0; j<y; j++){ 
       if(a[i][j]==0){ 
        zeros ++; 
       } 
      } 
     } 
     System.out.println(zeros); 
    } 

    public int[][] getA() { 
     return a; 
    } 
} 
+1

SE не для домашних вопросов. Вместо этого укажите свою точную проблему. –

ответ

1
Random r = new Random(); 
    a = new int[x][y]; 

    int noZeros = r.nextInt((y*x)/2-x) + x; 

    boolean z[][] = new boolean[x][y]; 


    for (int i = 0; i < noZeros; i++) { 
     z[r.nextInt(x)][r.nextInt(y)] = true; 
    } 

    for (int i = 0; i < x; i++) { 
     for (int j = 0; j < y; j++) { 
      if (!z[i][j]) { 
       a[i][j] = r.nextInt(9) + 1; 
      } 
      System.out.print(a[i][j] + " "); 
     } 
     System.out.println(); 
    } 



    System.out.println(); 

    int zeros = 0; 
    for (int i = 0; i < x; i++) { 
     for (int j = 0; j < y; j++) { 
      if (a[i][j] == 0) { 
       zeros++; 
      } 
     } 
    } 
    System.out.println(zeros); 

В моем решении создать первую булеву матрицу, которая представляет нули, то я выбрал случайное число, но от 1 до 9.

+0

Спасибо! : D Вы также можете помочь мне с моим другим вопросом? Как использовать эту матрицу с одинаковыми целыми числами с одним и тем же индексом в другом классе (например, «public class Game {...}») – User654

+0

Я не знаю, понимаю ли я, но если вы хотите использовать массив в классе Game , класс Game должен расширять класс Solution или вам нужно создать новый класс класса Solution в классе Game и вызвать метод getA(). – maro512

1

Я бы сначала определить, сколько 0s вы будете иметь в матрице, получая случайный int из вашей границы min/max. Тогда я бы вычислил другие xy - numZeros случайные целые числа. Наконец, для каждой ячейки в матрице я бы выбрал случайный элемент из объединенного списка (ваши 0s + другие случайные целые числа, удалив элемент при его выборе).

Смежные вопросы