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

时间:2014-02-07 04:49:08

标签: java arrays random

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

1 个答案:

答案 0 :(得分:1)

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

列出您可以拥有的令牌:

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

shuffle 这些令牌:

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();
}

示例输出(每次更改):

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