用 java 中的随机值填充矩阵的空单元格
Filling empty cells of a matrix with random values in java
我正在尝试在 Java
中创建一个矩阵,该矩阵将仅在空的位置填充随机值。我正在尝试这些代码,但它不起作用。
我制作了两个嵌套的 for
循环,一个用于行,一个用于列。对于每个位置,我询问它是否是 0
(我不确定如何对其进行控制)以及它是否不生成随机坐标并以 (i,j) 格式打印。 但是一直在打印0
.
public int[][] getRandomPosition(int matrixlength) {
int[][] grid = new int[matrixlength][matrixlength];
for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[i].length; j++) {
if (grid[i][j] == 0) {
grid[i][j] = (int) Math.random();
System.out.print(grid[i][j]);
return grid;
}
}
}
return null;
}
知道如何解决手头的问题吗?
Math.radnom()
return 大于或等于 0.0
且小于 1.0
的 double
。当您将其转换为 int
时,它将被截断为 0
。相反,您需要生成随机 int
。此外,您不应该 return 网格完全填满之前。例如:
Random rand = new Random();
for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[i].length; j++) {
if (grid[i][j] == 0) {
grid[i][j] = rand.nextInt();
}
}
}
为什么它总是打印零的原因是因为 Math.random()
returns 一个从 0.0
到 0.9
的数字,因此一旦你转换返回的结果Math.random()
到 int
, 它总是会导致 0
。
解决您的问题;您可以使用 Random
class 并利用其 nextInt
方法或使用以下公式:
grid[i][j] = (int)(Math.random() * (max - min) + min); // where min is the minimum value you want to generate and max is the max you want to generate (exclusive).
虽然我推荐前者,但您首先需要在外循环之前创建一个 Random
对象,即
Random randomGen = new Random();
然后在您的 if
块中,您可以:
grid[i][j] = randomGen.nextInt();
还有另一个 Random#nextInt
重载,可让您指定生成的随机数的范围。
我正在尝试在 Java
中创建一个矩阵,该矩阵将仅在空的位置填充随机值。我正在尝试这些代码,但它不起作用。
我制作了两个嵌套的 for
循环,一个用于行,一个用于列。对于每个位置,我询问它是否是 0
(我不确定如何对其进行控制)以及它是否不生成随机坐标并以 (i,j) 格式打印。 但是一直在打印0
.
public int[][] getRandomPosition(int matrixlength) {
int[][] grid = new int[matrixlength][matrixlength];
for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[i].length; j++) {
if (grid[i][j] == 0) {
grid[i][j] = (int) Math.random();
System.out.print(grid[i][j]);
return grid;
}
}
}
return null;
}
知道如何解决手头的问题吗?
Math.radnom()
return 大于或等于 0.0
且小于 1.0
的 double
。当您将其转换为 int
时,它将被截断为 0
。相反,您需要生成随机 int
。此外,您不应该 return 网格完全填满之前。例如:
Random rand = new Random();
for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[i].length; j++) {
if (grid[i][j] == 0) {
grid[i][j] = rand.nextInt();
}
}
}
为什么它总是打印零的原因是因为 Math.random()
returns 一个从 0.0
到 0.9
的数字,因此一旦你转换返回的结果Math.random()
到 int
, 它总是会导致 0
。
解决您的问题;您可以使用 Random
class 并利用其 nextInt
方法或使用以下公式:
grid[i][j] = (int)(Math.random() * (max - min) + min); // where min is the minimum value you want to generate and max is the max you want to generate (exclusive).
虽然我推荐前者,但您首先需要在外循环之前创建一个 Random
对象,即
Random randomGen = new Random();
然后在您的 if
块中,您可以:
grid[i][j] = randomGen.nextInt();
还有另一个 Random#nextInt
重载,可让您指定生成的随机数的范围。