使用C语言生成随机彩票的双色球或大乐透的球号数

该程序功能为从键盘输入想要够买的彩票注数,随后生成对应个随机球号数并输出(显然随机数不能重复)。

代码如下:

#include 
#include 
#include 

//双色球:红:33选6 蓝:16选1
//大乐透:红:35选5 蓝:12选2

#define RED 35
#define pick1 5
#define BLUE 12
#define pick2 2

int r1[RED]={0},b1[BLUE]={0},r2[RED]={0},b2[BLUE]={0};

void red()
{
    int i,j,k;
    for(j=0,i=0;i<pick1;i++,j++)
    {
         r1[i]=rand()%RED+1;
        for(k=0;k<=i;k++)
        {
            r2[j]=r1[i];
            if(r1[i]==r2[k] && i!=k)
            {
                i--;
                j--;
                break;
            }
        }
    }
    for(i=0;i<pick1;i++)
        printf("%02d ",r1[i]);
}

void blue()
{
    int i,j,k;
    for(j=0,i=0;i<pick2;i++,j++)
    {
         b1[i]=rand()%BLUE+1;
        for(k=0;k<=i;k++)
        {
            b2[j]=b1[i];
            if(b1[i]==b2[k] && i!=k)
            {
                i--;
                j--;
                break;
            }
        }
    }
    for(i=0;i<pick2;i++)
        printf("%02d ",b1[i]);
}

int main()
{
    int n,i;
    srand(time(NULL));
    printf("Please enter the number:");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        printf("<%d>  ",i);
        red();
        printf("----");
       blue();
       printf("\n");
    }
    system("pause");
    return 0;
}

修改define中相应的数字,即可改变对应颜色输出的球号的个数。

其中生成不重复随机数的方法为:
通过比较当前生成数与除它本身之外已生成的数,若有相同的数,则对它进行重新赋值,直到没有重复的数为止。

程序运行结果如下:
使用C语言生成随机彩票的双色球或大乐透的球号数_第1张图片

你可能感兴趣的:(c语言,算法)