私は8行8列の行列を生成しようとしています。行列の各要素は、各列の1つの要素が0に設定され、1つの要素が0〜7の間のランダムなintを生成することによって選択される以外は1の値を持つ必要があります。マトリックス上のランダム要素の設定値
1 1 1 1 1 1 1 1
1 1 1 0 1 1 1 1
1 1 0 1 1 1 1 1
1 0 1 1 1 1 1 1
1 0 1 1 1 1 1 1
1 0 0 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 0 1 1
私の行列は次のようになります:すべての
1 1 1 1 1 1 1 1
1 1 0 1 1 1 1 1
1 1 1 1 1 0 1 0
0 1 1 1 1 1 1 1
1 1 1 0 1 1 0 1
1 0 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 0 1 1 1
コード
for (int[] row: grid)
Arrays.fill(row, 1);
for (int i=0; i<grid.length; i++) {
int j = getRandom();
grid[i][j] = 0;
}
// print matrix
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++)
System.out.format("%2s%2d%2s", " ", Main.grid[i][j], " ");
System.out.println();
}
どうしたのですか? – Alex
@Alexコードを実行すると、いくつかの列がスキップされるか、同じ列に2つの0値が作成されます。 – PRCube
Aah ok。これは、これらのタスクを最も内側のループの内側に配置して、それらを両方ともセルごとに1回実行させるためです。すべてのセルでセルを1に設定する必要がありますが、カラムごとに0を選択する必要があります – Alex