简单的模拟双色球

问题:简单的模拟产生双色球。

要求:用户可以输入要产生的组数,每组不能有重复数字。

代码:

解法一:

printf("请输入要产生的组数:\n");
        int count = 0;  //定义输入数字变量
        scanf("%d",&count);
        for (int num = 0;num<count; num++) {
            int balls[] = {0,0,0,0,0,0,0}; //定义存放红球的随机数组
            //用来产生六个随机数
            for (int i = 0; i<6;i++) {
                int temp = arc4random()%33+1;
                balls[i] = temp;
                //用来判断本次产生的数字和前面的是否相等
                for(int j = 0;j<i;j++){
                    if (temp == balls[j]) {
     //                   printf("有重复\n");  //此句可用来测试是否有重复
                        i--;  //若有重复,则返回到上一次重新产生随机数
                    }
                }
            }
            
            balls[6] = arc4random()%16+1; //定义数组中的第六个数字,产生蓝球
            
            printf("红球:");  //打印出红球号码
            for (int i= 0; i<6; i++) {
                printf("%d\t",balls[i]);
            }
            printf("蓝球:");  //打印出蓝球号码
            printf("%d\n",balls[6]);
        }

解法二:

int red[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33};
        int blue[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
        int length = sizeof(red)/sizeof(int);
        int blueLength = sizeof(blue)/sizeof(int);
        
        int num;
        printf("请输入组数:");
        scanf("%d",&num);
        
        int i;
        while (i<num) {
            int r1 = arc4random() % length;
            int r2 = arc4random() % length;
            int r3 = arc4random() % length;
            int r4 = arc4random() % length;
            int r5 = arc4random() % length;
            int r6 = arc4random() % length;
            int blue = arc4random() % blueLength;
            
            int a = red[r1];
            int b = red[r2];
            int c = red[r3];
            int d = red[r4];
            int e = red[r5];
            int f = red[r6];
            int g = red[blue];
            
            if (!(a==b | a==c | a==d | a==e | a==f | a==g | b==c | b==d | b==e | b==f | b==g | c==d | c==e | c==f | c==g | d==e | d==f | d==g | e==f | e==g | f==g)) {
                printf("红球:%d %d %d %d %d %d 蓝球:%d\n",a,b,c,d,e,f,g);
                i++;
            }
        }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值