随机数组生成
Random Array generation
我正在尝试创建一个数组并在整个数组中随机填充 0 或 1。您将在下面找到代码。我是 java 的新手,如有任何帮助,我们将不胜感激。
private static void randHouse() {
int rows = 4;
int columns = 5;
int i = 0;
int y = 0;
int [][] myList = {
{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0}
};
System.out.println(Arrays.deepToString(myList)); // just prints the array
for (i : rows); {
for (y : columns);{
myList[i][y] = (int)random() * 10;
}
}
}
我目前遇到错误:
java:for 循环的错误初始值设定项
for (int i = 0; i < rows.length; i++) {
for (int j = 0; j < columns.length; j++) {
myList[i][j] = (int)random() * 10;
}
}
使用流是最简单的 (imo)。
int r = 4;
int c = 5;
int[][] result = randHouse(r,c);
for (int[] row : result) {
System.out.println(Arrays.toString(row));
}
打印类似
的东西
[1, 1, 0, 1, 1]
[0, 1, 0, 0, 1]
[1, 0, 1, 1, 1]
[1, 0, 1, 0, 0]
IntStream
遍历行
- 内部 rand 调用生成每行 1 和 0。
- 然后组合成数组数组
private static int[][] randHouse(int r, int c) {
Random rand = new Random();
return IntStream.range(0, r)
.mapToObj(i -> rand.ints(c, 0, 2).toArray())
.toArray(int[][]::new);
}
注意:在你原来的问题中,(int)Math.random()*10
会先将随机值转换为0,然后乘以10。所以你得到的都是零。如果您执行以下操作 (int)(Math.random()*10)
,您将获得介于 0
和 9
之间的值。您应该使用 2
.
而不是 10
我正在尝试创建一个数组并在整个数组中随机填充 0 或 1。您将在下面找到代码。我是 java 的新手,如有任何帮助,我们将不胜感激。
private static void randHouse() {
int rows = 4;
int columns = 5;
int i = 0;
int y = 0;
int [][] myList = {
{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0}
};
System.out.println(Arrays.deepToString(myList)); // just prints the array
for (i : rows); {
for (y : columns);{
myList[i][y] = (int)random() * 10;
}
}
}
我目前遇到错误: java:for 循环的错误初始值设定项
for (int i = 0; i < rows.length; i++) {
for (int j = 0; j < columns.length; j++) {
myList[i][j] = (int)random() * 10;
}
}
使用流是最简单的 (imo)。
int r = 4;
int c = 5;
int[][] result = randHouse(r,c);
for (int[] row : result) {
System.out.println(Arrays.toString(row));
}
打印类似
的东西[1, 1, 0, 1, 1]
[0, 1, 0, 0, 1]
[1, 0, 1, 1, 1]
[1, 0, 1, 0, 0]
IntStream
遍历行- 内部 rand 调用生成每行 1 和 0。
- 然后组合成数组数组
private static int[][] randHouse(int r, int c) {
Random rand = new Random();
return IntStream.range(0, r)
.mapToObj(i -> rand.ints(c, 0, 2).toArray())
.toArray(int[][]::new);
}
注意:在你原来的问题中,(int)Math.random()*10
会先将随机值转换为0,然后乘以10。所以你得到的都是零。如果您执行以下操作 (int)(Math.random()*10)
,您将获得介于 0
和 9
之间的值。您应该使用 2
.
10