随机数循环

时间:2014-03-31 16:28:18

标签: java random

我用Java和计算机模式制作连接4游戏。电脑会随机播放。我编写了代码来随机选择列。计算机确实在列上随机播放,但继续在同一列上播放。

我应该怎样做才能让它随时随地在任何列上播放。 到目前为止,这是我的简单代码:

public static Random rnd = new Random();
public static final int row = Row - 1;
public static int col = rnd.nextInt(7);

我应该编写什么代码,我需要变量col作为此类的下一个方法

2 个答案:

答案 0 :(得分:1)

每次计算机播放时都需要调用nextInt,以重新生成随机数。

您当前拥有的内容会为该列生成一个随机数,但您永远不会更新它。因此,对于每个新游戏,计算机只能在相同的“随机”列中播放。

假设您有一个方法computerTurn(),您可以在每次轮到计算机时调用它。就这样。

void computerTurn(){
    int col = rnd.nextInt(7);
    placeInCol(compute, col);
}

请注意,您必须检查是否可以在列中播放。因此,处理此问题的最佳方法是创建一个包含可供播放的列的List。

List<Integer> columnsAvailable = new ArrayList<>(Arrays.asList(1,2,3,4,5,6));

现在它会寻找这样的东西:

 void computerTurn(){
        int index = rnd.nextInt(columnsAvailable.size());
        int col = columnsAvailable.get(index);
        if(isAvailableCol(col)){
            placeInCol(computer, col);
        } else {
            columnsAvailable.remove(index);
            //get a new random column here.
        }
 }

答案 1 :(得分:0)

生成的随机数可能会重复。这就是问题。因此,您可以暂时保存生成的随机数,并使用下一个随机数检查它,如果它们是相同的循环它。这是一个宽逻辑。你可以使用Collections.shuffle(); 。然后,重复就不会有头疼。