Java 随机数循环

Java 随机数循环,java,random,Java,Random,我正在用Java和vs计算机模式制作connect 4游戏。电脑将随机播放。我编写了随机选择列的代码。电脑确实在一个栏目上随机播放,但之后继续在同一个栏目上播放 我该怎么做才能让它在电脑轮到的时候在任何专栏上随机播放呢。 这是我迄今为止的简单代码: public static Random rnd = new Random(); public static final int row = Row - 1; public static int col = rnd.nextInt(7); 我应该写

我正在用Java和vs计算机模式制作connect 4游戏。电脑将随机播放。我编写了随机选择列的代码。电脑确实在一个栏目上随机播放,但之后继续在同一个栏目上播放

我该怎么做才能让它在电脑轮到的时候在任何专栏上随机播放呢。 这是我迄今为止的简单代码:

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

我应该写什么代码?我需要变量
col
,用于我的下一个此类方法

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

您当前拥有的将为列生成一个随机数,但您从未更新它。因此,对于每一个新游戏,计算机将只在同一个“随机”列中玩

假设您有一个方法
computerTurn()
,每次轮到计算机播放时都会调用该方法。差不多吧

void computerTurn(){
    int col = rnd.nextInt(7);
    placeInCol(compute, col);
}
请注意,您必须检查您是否可以在该列中播放。所以最好的方法是创建一个列表,其中包含可播放的列

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

生成的随机数可能会重复。这就是问题所在。因此,您可以暂时保存生成的随机数,并与下一个随机数进行检查,如果它们相同,则再次循环。这是一个广泛的逻辑。您可以使用Collections.shuffle()。这样,就不会因为重复而头痛。

@user3481879每当你想要一个新的随机数时,就给你的随机对象打个电话。非常感谢::)@ZouZou
 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.
        }
 }