如何在填充数组时结束的循环中随机填充二维数组

时间:2016-01-23 03:24:18

标签: java arrays random

我从这个更大的项目中取出了这段代码,基本上我想在数组中选择一个随机点,并记住它已被选中(通过将其值设置为1)并重复直到整个阵列都被填满。 这段代码有什么问题?为什么不填充每个字段?

Result:[
  {
     event:[
        {
          time:2016-01-21T00:12:03Z
          source: xyz
        }
     ]
  },

   {
     event:[
        {
          time:2016-01-20T00:06:12Z,
          source: xyz
        }
     ]

   },

   {
     event:[
        {
          time:2016-01-20T00:06:12Z,
          source: abc
        }
     ]

   }

]

1 个答案:

答案 0 :(得分:1)

在最糟糕的情况下,如果每次选择x = 0,y = 0,您的代码会将操作仅应用于该像素。然后尝试arraysizex * arraysizey次,但由于检查为零而跳过。

尝试

   int i = 0;
   while(i < arraysizex * arraysizey) {
        x = (int) (Math.random() * arraysizex);
        y = (int) (Math.random() * arraysizey);
        if (array[x][y] == 0) {
            array[x][y] = 1;
            i++;
            //do something
        }
    }

这可以保证您执行arraysizex * arraysizey次操作,因为它只在您执行操作时递增