如何在Java中随机生成0到3之间的整数而不使它们连续?

如何在Java中随机生成0到3之间的整数而不使它们连续?,java,math,random,Java,Math,Random,到目前为止,我已经成功地使用random生成了随机数 for(int i=0; i<10; i++){ prevnum = num; num = random.nextInt(4); num = num==prevnum?ran.nextInt(4):num; System.out.println("random number: " + num); } 对于(int i=0;i您最好获得一个随机数,直到它与最后一个数不同,而不是一次,换句话说,重复此条件:

到目前为止,我已经成功地使用random生成了随机数

for(int i=0; i<10; i++){
    prevnum = num;
    num = random.nextInt(4);
    num = num==prevnum?ran.nextInt(4):num;
    System.out.println("random number: " + num);
}

对于(int i=0;i您最好获得一个随机数,直到它与最后一个数不同,而不是一次,换句话说,重复此条件:

num = num==prevnum?ran.nextInt(4):num;
比如:

因为您的号码很少,所以可能是相同的,所以如果需要,请多次检查。

试试这个

Random ran = new Random();
int cur, pre = ran.nextInt(4);
for (int i = 0; i < 10; i++) {
    cur = ran.nextInt(4);
    while (cur == pre) {
        cur = ran.nextInt(4);
    }
    pre = cur;
    System.out.println(cur);
}
Random ran=new Random();
int cur,pre=ran.nextInt(4);
对于(int i=0;i<10;i++){
cur=ran.nextInt(4);
while(cur==pre){
cur=ran.nextInt(4);
}
pre=cur;
系统输出打印项次(cur);
}

如果不希望连续重复,则始终希望两个连续数字之间的间隔不为零。建议您正常选择第一个数字,然后从该点选择一个随机但不为零的间隔。将间隔添加到上一个数字,以获得下一个数字,该数字将始终不同

一些伪代码:

// First random number.
currentNum <- random(4);
print(currentNum);

// The rest of the random numbers.  
repeat
  gap <- 1 + random(3);
  currentNum <- (currentNum + gap) MOD 4;
  print(currentNum);
until enough numbers;
//第一个随机数。

currentNum我尝试过这个,但不幸的是,可能由于范围太小,仍然会连续。请在“for”循环和“System.out”之前使用此循环。数字不能相同,因为如果它们相同,您将得到另一个,多次。这样做会使我的程序进入一个无限循环,没有任何输出。不要担心,因为它们在一次尝试中肯定不相同。您可以添加一些其他条件来检查此循环将运行多少次,但这不是必需的谢谢,我已经用当前的工作解决方案解决并编辑了我的问题!
Random ran = new Random();
int cur, pre = ran.nextInt(4);
for (int i = 0; i < 10; i++) {
    cur = ran.nextInt(4);
    while (cur == pre) {
        cur = ran.nextInt(4);
    }
    pre = cur;
    System.out.println(cur);
}
// First random number.
currentNum <- random(4);
print(currentNum);

// The rest of the random numbers.  
repeat
  gap <- 1 + random(3);
  currentNum <- (currentNum + gap) MOD 4;
  print(currentNum);
until enough numbers;