随机数问题(急)(初学)

 

import static java.lang.Math.*;

public class luckyChoice
{
    public static void main(String args[])
    {
        int count = 6;//用来存储生成数字的个数
        int num1,num2,num3,num4 ,num5,num6;
        num1 = num2 = num3 = num4 = num5 = num6 = 1000;//用来存储生成数字的变量
        int array  = 49;//生成数字的边界
        int set = 5;//生成数字的组数
        //开始生成数字
        for(int i = 1;i <= set;i++)
        {
        
            
            for(int j = 1;j <= count;j++)
            {
                int num = (int)(array*random()) + 1;//生成随机数1-49
                
                switch(j)
                {
                    case 1:
                        num1 = num;
                        System.out.println("num:"+num+" num1:"+num1);
                        break;
                    case 2:
                        if(num != num1)
                        {
                            num2 = num;
                            System.out.println("num:"+num+" num2:"+num2);
                        }
                        break;
                    case 3:
                        if(num != num1 && num != num2)
                        {
                            num3 = num;
                            System.out.println("num:"+num+" num3:"+num3);
                        }
                        break;
                    case 4:
                        if(num != num1 && num != num2 && num != num3)
                        {
                            num4 = num;
                            System.out.println("num:"+num+" num4:"+num4);
                        }
                        break;
                    case 5:
                        if(num != num1 && num != num2 && num != num3 && num != num4)
                        {
                            num5 = num;
                            System.out.println("num:"+num+" num5:"+num5);
                        }
                        break;
                    case 6:
                        if(num != num1 && num != num2 && num != num3 && num != num4 && num != num5)
                        {
                            num6 = num;
                            System.out.println("num:"+num+" num6:"+num6);
                        }
                        break;  
                }       
            }
            System.out.println("第"+i+"组:"+num1+" "+num2+" "+num3+" "+num4+" "+num5+" "+num6);
        }
    }
}

 结果却出现:

 num:19 num1:19
num:2 num2:2
num:41 num3:41
num:8 num4:8
num:38 num6:38
第1组:19 2 41 8 1000 38
num:9 num1:9
num:20 num2:20
num:16 num3:16
num:41 num4:41
num:11 num5:11
num:12 num6:12
第2组:9 20 16 41 11 12
num:2 num1:2
num:19 num2:19
num:42 num3:42
num:26 num4:26
num:1 num5:1
num:21 num6:21
第3组:2 19 42 26 1 21
num:41 num1:41
num:17 num2:17
num:27 num3:27
num:45 num4:45
num:6 num5:6
num:40 num6:40
第4组:41 17 27 45 6 40
num:6 num1:6
num:29 num2:29
num:7 num3:7
num:10 num4:10
num:2 num5:2
num:47 num6:47
第5组:6 29 7 10 2 47

第一组为啥生成这样的记过呀,真是郁闷

2个回答

num:19 num1:19
num:2 num2:2
num:41 num3:41
num:8 num4:8
num:38 num6:38
第1组:19 2 41 8 1000 38
拿这个来说,显然 第5个数随机产生和前4个重复,所以case 5直接break
最后输出的num5 其实是之前赋值的

就是说有重复的时候,输出的值其实是之前的值

我晕,比如说,19 2 41 8 随即成功了吧。这时候
num1 = 19
num2 = 2
num3 = 41
num4 = 8

然后了,当for循环到第5个时候,num随即得到的是2.。。那完了。你的条件
if(num != num1 && num != num2 && num != num3 && num != num4) 他不满足了。。所以跳过去,不执行case 5里面的if语句里面的表达式了。。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问