如何用随机整数(从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;
}
}
答案 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。