为了账号安全,请及时绑定邮箱和手机立即绑定

Java - 5x5数组中的随机数字

Java - 5x5数组中的随机数字

FFIVE 2022-07-20 12:06:45
int[][] array = new int[5][5];    for (int i = 0; i < array.length; i++) {        for (int j = 0; j < array.length; j++) {            System.out.print(1);        }        System.out.println();    }大家好,我有这个打印 5x5 1 的数组1111111111111111111111111我想做的是将这些 1 中的三 (3) 个随机设为 0。例子1110111111110111011111111我怎么做?先感谢您!
查看完整描述

3 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

您必须首先用 1 初始化数组:


int[][] array = new int[5][5];

for (int i = 0; i < array.length; i++) {

    for (int j = 0; j < array.length; j++) {

        array[i][j] = 1;

    }

}

然后在 3 个随机位置设置 0:


Random random = new Random();

int a = 0;

while (a < 3) {

    int i = random.nextInt(array.length);

    int j = random.nextInt(array[0].length);

    if(array[i][j] != 0) {

        array[i][j] = 0;

        a++;

    }

}

使用这种方法,数组中的每个条目都有相同的机会变成 0。最后你应该打印数组:


for (int i = 0; i < array.length; i++) {

    for (int j = 0; j < array.length; j++) {

        System.out.print(array[i][j]);

    }

    System.out.println();

}


查看完整回答
反对 回复 2022-07-20
?
侃侃无极

TA贡献2051条经验 获得超10个赞

对于随机的东西,你可以使用Math.random()。它返回一个介于 0 包含和 1 排除之间的随机双精度。你可以这样做:


int w = 5, h = 5;

int[][] array = new int[w][h]; 

for (int i = 0; i < w; i++) { 

  for (int j = 0; j < h; j++) {  

    array[i][j] = 1;

  }  

}

for (int c = 0; c < 3; c++) {

  int i, j;

    do {

      int index = (int)(Math.random() * w * h);

      i = index / w;

      j = index % w;

    } while (array[i][j] == 0);

    array[i][j] = 0;

  }

仅当 0 的数量与数组的总大小相比较低时,此解决方案才可接受。如果 0 的数量太高,这段代码的效率会非常低,因为我们会随机搜索 1 的值


查看完整回答
反对 回复 2022-07-20
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

这是一个稍微不同的有趣解决方案。创建一个包含从 0 到 24 的数字的列表,将列表打乱并从中选择 3 个第一个元素来更新二维数组。数字序列意味着数组中不同的位置将多次设置为 0。


List<Integer> sequence = IntStream.rangeClosed(0, 24)

    .boxed()

    .collect(Collectors.toList());


Collections.shuffle(sequence);


for (int i = 0; i < 3; i++) {

    int value = sequence.get(i);

    int row  = value / 5;

    int  column = value % 5;


    array[row][column] = 0;

}

生成序列的代码来自这个答案


查看完整回答
反对 回复 2022-07-20
  • 3 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信