java - 生成 6 个不相等数字的循环失败 (java)

标签 java loops random boolean

我这里有以下代码:

    import java.util.Random;

    public class Main {
        public static void main(String[] args) {
            int numnovo, numeros[], j;
            boolean igual;
            numeros = new int[6];

            Random rand = new Random();

            numnovo = rand.nextInt(60)+1;
            numeros[0] = numnovo;

            System.out.println("Número 1: " + numeros[0]);

            for(int i = 1; i < 6; i++)
            {
                do
                {
                    igual = true;
                    numnovo = rand.nextInt(60)+1;
                    j=0;
                    while(j<=i && igual)
                    {
                        igual = (numnovo == numeros[j++]);
                    }
                }while(igual);
                numeros[i] = numnovo;
                System.out.println("Número " + (i+1) + ": " + numeros[i]);
            }
    }
}

所以,这是我从中得到的结果之一:

numeros[0]=48 
numeros[1]=31
numeros[2]=52
numeros[3]=25 - repeated
numeros[4]=18
numeros[5]=25 - repeated

然而,在分析代码时,我认为它会在循环内出现以下情况:

i=5

j=0 numeros[0]=48   false
j=1 numeros[1]=31   false
j=2 numeros[2]=52   false
**j=3   numeros[3]=25   true**

特别是在标记的行中,我假设 while 循环 (j<=i && igual) 的条件得到满足,因此它会退出循环并生成一个新数字,但事实并非如此发生,它直接通过并认为它是一个有效值。

我已经围绕这个问题思考了一天左右,但找不到解决方案,大约 10% 的执行过程中都会发生这种情况,所以它不是孤立的案例。

我试图研究“j vs i”关系,如“重复的数字是否总是接近前一个”,但在某些执行中,重复的数字将是 numeros[0] 和 numeros[5],并且在其他情况下,它可能类似于 numeros[0] 和 numeros[1],因此该论文无效。

我也尝试将条件从 && 更改为 ||,但一点也没有改变。

我还尝试了一些不同的条件语法,如朝相反的方向(使用错误语句而不是 true),以及不同的循环而不是 Do-While,但仍然没有成功。

那么...这里有什么帮助吗?

最佳答案

您必须将 do-while 循环更改为

do
{
    igual = false;
    numnovo = rand.nextInt(60)+1;
    j=0;
    while(j<=i && !igual)
    {
        igual = (numnovo == numeros[j++]);
    }
}while(igual);

您的代码仅在遇到第一个不相等的数字时才退出循环。相反,假设数字不相等,并在遇到重复数字时退出循环。

关于java - 生成 6 个不相等数字的循环失败 (java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56213768/

相关文章:

具有父类(super class)引用的 java 转换

ios - enumerateGroupsWithTypes 循环没有停止

r - 具有指定均值的样本整数值

python - 迭代嵌套的 Python 字典

秒表和 foreach 循环的 C# *奇怪* 问题

python - Python 中的 Seed() 和随机数

java - 如何随机化 RadioButton?

java - Tomcat 文件夹作为类路径?

java - 使用主键进行 hibernate 一对一连接不起作用

java - 使 JTable 可滚动