为矩阵上的随机元素设置值

PRCube

我正在尝试生成8 x 8矩阵。矩阵的每个元素都需要具有值1,但每一列上的一个元素都设置为0,即通过在0-7之间生成一个随机整数来选择一个元素。

运行代码后,我得到的是:

   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();
    }
亚历克斯

在嵌套循环中,单元的初始化和空置都在最内部的循环中。这将使两者在每个单元格中都运行一次,但是对每个列仅进行一次空值处理。

如果我们将单元格的初始化顺序从逐行更改为逐列,则可以将清零逻辑移到最外层的循环中。

for (int c = 0; c < 8; c++) {
    for (int r = 0; r < 8; r++) {
        Main.grid[r][c] = 1;
    }

    Main.grid[getRandom()][c] = 0; // assuming your getRandom() is within range
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章