leeronc 2011-08-02 14:41
浏览 273
已采纳

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

 

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条回答 默认 最新

  • tmgod 2011-08-02 14:56
    关注

    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 其实是之前赋值的

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!