java - 用元素随机填充网格的最快方法

标签 java arrays random

我有一个网格: int[][] the_grid = new int[4][4]; 我想用元素 ?, +, -, *, !, 随机填充它/, #, % 使得正好两个方格中有其中一个元素。完成这项任务最简洁、最有效的方法是什么?

最佳答案

如果您的网格实际上包含 String(而不是 int),我会简单地:

列出您可以拥有的代币:

final List<String> tokens = Arrays.asList("?", "+", "-", "*", "!", "/", "#", "%", "?", "+", "-", "*", "!", "/", "#", "%");

随机播放这些标记:

Collections.shuffle(tokens);

最后在迭代网格时添加它们:

int i = 0, j = 0;
for (final String token : tokens) {
    theGrid[i][j] = token;
    if (++j == 4) {
        j = 0;
        ++i;
    }
}
<小时/>

完整示例:

final String[][] theGrid = new String[4][4];
final List<String> tokens = Arrays.asList("?", "+", "-", "*", "!", "/", "#", "%", "?", "+", "-", "*", "!", "/", "#", "%");
Collections.shuffle(tokens);

int i = 0, j = 0;
for (final String token : tokens) {
    theGrid[i][j] = token;
    if (++j == 4) {
        j = 0;
        ++i;
    }
}

用法:

for (final String[] row : theGrid) {
    for (final String column : row) {
        System.out.print(column);
    }

    System.out.println();
}

示例输出(每次都会更改):

?!!%
+*--
#/#%
*/?+

关于java - 用元素随机填充网格的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21619577/

相关文章:

c - 如何从特定函数返回数组?

c++ - 使用 <random> 和函数生成随机双 vector

javascript:从范围内生成 2 个随机但不同的数字

java - 如何在java中删除Jtidy中的警告

java - Apache POI 和 Aspose?

java - 错误: Only the original thread that created a view hierarchy can touch its views on Android app

javascript - 我想在数组下方显示单个数组中的所有模型属性值

c++ - 我怎样才能在 C++ 中将一个字符转换为数组字符

javascript - 获得均匀采样 "chain"项的数学完美方法

java - Java中ArrayList的归并排序