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

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 的数组


11111

11111

11111

11111

11111

我想做的是将这些 1 中的三 (3) 个随机设为 0。例子


11101

11111

11011

10111

11111

我怎么做?先感谢您!


FFIVE
浏览 104回答 3
3回答

MMTTMM

您必须首先用 1 初始化数组:int[][] array = new int[5][5];for (int i = 0; i < array.length; i++) {&nbsp; &nbsp; for (int j = 0; j < array.length; j++) {&nbsp; &nbsp; &nbsp; &nbsp; array[i][j] = 1;&nbsp; &nbsp; }}然后在 3 个随机位置设置 0:Random random = new Random();int a = 0;while (a < 3) {&nbsp; &nbsp; int i = random.nextInt(array.length);&nbsp; &nbsp; int j = random.nextInt(array[0].length);&nbsp; &nbsp; if(array[i][j] != 0) {&nbsp; &nbsp; &nbsp; &nbsp; array[i][j] = 0;&nbsp; &nbsp; &nbsp; &nbsp; a++;&nbsp; &nbsp; }}使用这种方法,数组中的每个条目都有相同的机会变成 0。最后你应该打印数组:for (int i = 0; i < array.length; i++) {&nbsp; &nbsp; for (int j = 0; j < array.length; j++) {&nbsp; &nbsp; &nbsp; &nbsp; System.out.print(array[i][j]);&nbsp; &nbsp; }&nbsp; &nbsp; System.out.println();}

侃侃无极

对于随机的东西,你可以使用Math.random()。它返回一个介于 0 包含和 1 排除之间的随机双精度。你可以这样做:int w = 5, h = 5;int[][] array = new int[w][h];&nbsp;for (int i = 0; i < w; i++) {&nbsp;&nbsp; for (int j = 0; j < h; j++) {&nbsp;&nbsp;&nbsp; &nbsp; array[i][j] = 1;&nbsp; }&nbsp;&nbsp;}for (int c = 0; c < 3; c++) {&nbsp; int i, j;&nbsp; &nbsp; do {&nbsp; &nbsp; &nbsp; int index = (int)(Math.random() * w * h);&nbsp; &nbsp; &nbsp; i = index / w;&nbsp; &nbsp; &nbsp; j = index % w;&nbsp; &nbsp; } while (array[i][j] == 0);&nbsp; &nbsp; array[i][j] = 0;&nbsp; }仅当 0 的数量与数组的总大小相比较低时,此解决方案才可接受。如果 0 的数量太高,这段代码的效率会非常低,因为我们会随机搜索 1 的值

慕侠2389804

这是一个稍微不同的有趣解决方案。创建一个包含从 0 到 24 的数字的列表,将列表打乱并从中选择 3 个第一个元素来更新二维数组。数字序列意味着数组中不同的位置将多次设置为 0。List<Integer> sequence = IntStream.rangeClosed(0, 24)&nbsp; &nbsp; .boxed()&nbsp; &nbsp; .collect(Collectors.toList());Collections.shuffle(sequence);for (int i = 0; i < 3; i++) {&nbsp; &nbsp; int value = sequence.get(i);&nbsp; &nbsp; int row&nbsp; = value / 5;&nbsp; &nbsp; int&nbsp; column = value % 5;&nbsp; &nbsp; array[row][column] = 0;}生成序列的代码来自这个答案
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java