简单的模拟双色球

来源:互联网 发布:rstudio数据恢复官网 编辑:程序博客网 时间:2024/06/10 03:28

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

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

代码:

解法一:

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