java - 在 Java 中将随机字符放置在数组板上

标签 java arrays random character

我正在制作一个简单的阵列板。我试图让字符“$”在随机位置出现 10 次,而“R”在随机位置仅出现一次。我继续改变随机化,但我知道我的做法是错误的。字符以随机数量出现在随机位置

编辑:我忘了提及我正在尝试维护嵌套的 for 循环。

编辑:我在代码中放置了我最后尝试的 if 语句,而不是占位符。

这是我的代码:

import java.util.*;
public class board
{
    public static void main(String[] args)
    {
        char $;
        char R;
        char board[][] = new char[10][10];

        for(int x = 0; x < board.length; x++)
        {
            for(int i = 0; i < board.length; i++)
            {
                double random = Math.random();
                if(random >.01 && random <=.10)
                {
                    board[x][i] = 'R';
                }
                else if(random > .01 && random <= .15)
                {
                    board[x][i] = '$';
                }
                else {
                    board[x][i] = '.';
                }
                System.out.print(board[x][i] + " ");
            }
            System.out.println("");
        }
    }
}

最佳答案

通过迭代所有位置并与概率进行比较,您不会获得随机放置。如果放置太多或不足会发生什么情况?更好的算法是生成随机位置,直到棋盘上有足够的位置为止。像这样的东西:

while (count < target) {
    int x = rand.getInt(size);
    int y = rand.getInt(size);
    if (board[x][y] == '.') {
        board[x][y] = '$';
        count++;
    }
}

这将自动跳过已分配该角色的位置,并将继续,直到放置了足够的位置。

这可以做成一个用于两个展示位置的方法:

private void place(char toPlace, int target) {
    int count = 0;
    while (count < target) {
        int x = rand.getInt(size);
        int y = rand.getInt(size);
        if (board[x][y] == '.') {
            board[x][y] = toPlace;
            count++;
        }
    }
}

place('M', 1);
place('$', 10);

关于java - 在 Java 中将随机字符放置在数组板上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36683948/

相关文章:

多维空间中的随机单位向量

java - 在android中解析Json对象?

java - Hamcrest 关于两个值的断言

java - For 和 foreach 循环 - 如何最有效地创建它们

python - numpy.savetxt() 输出非常大的文件

java - java中的简单加密-无 key /密码

mysql - 使用给定字符串值集的随机值更新表

java - 寻找 : A popup implementation in a Java library, 并执行特定操作

c - 如何将时间转换为c中的c字符串?

php - 多维数组到PHP中的单个数组