用随机值填充模拟数组的家庭作业

时间:2017-01-14 19:15:01

标签: java matrix

如何用随机整数(从0到9)创建x y矩阵(其中x< = y),其在java中至少有x个零和max(x y)/ 2 ?

给出矩阵(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;
    }
}

2 个答案:

答案 0 :(得分:1)

我首先要确定矩阵中有多少0,从最小/最大界限内得到一个随机int。然后我会计算其他xy - numZeros随机整数。最后,对于矩阵中的每个单元格,我会从组合列表中选择一个随机元素(你的0s +其他随机整数,在挑选时删除元素)。

答案 1 :(得分: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。