用Java在阵列板上放置随机字符

时间:2016-04-18 01:03:15

标签: 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("");
        }
    }
}

2 个答案:

答案 0 :(得分:1)

通过迭代所有位置并与概率进行比较,您不会得到随机放置。如果放置太多或不够,会发生什么?一个更好的算法是生成随机位置,直到你有足够的板。类似的东西:

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

答案 1 :(得分:0)

它会随机放置,但您没有控制生成数量的代码。你应该有一个$的计数器和一个R的计数器,当你有足够的时候,它就不应该打印那个角色了。此外,当前代码可以覆盖先前放置的字符。您应该添加一个if语句来检查即将被替换的地址的当前值,并确保它首先为空。