99Game 模拟器研究 Ascent 's Archiver

czlhb7128 发表于 2008-4-12 13:02

vc 高手请进,帮忙完善下随机选号程序

希望高手完善下彩票随机选号算法(双色球6+1  ,红球六位(范围1-32),蓝球一位(范围:1-16)   )
(运行有时会报数组error)
1)新建一个“MFC”程序,在选择模式时,选择基于“Dialog”模式;
2)将新建的对话框上缺省的控件全部删去,然后添加7个Edit控件和1个Button控件;
3)右击任一Edit控件,在出现的菜单中选择“ClassWizard”;在“ClassWizard”中为7个Edit控件一一绑定Int型的变量:m_num1,m_num2.....m_num7;
4)在“ClassWizard”中为Button控件添加一个处理过程,选择“Add Handle & Edit”,填入如下代理():

void CGuessDlg::OnButton1()
{
    int temp,pnum[32],num[6]; //临时变量,临时数组
    for(int i=0;i<32;i++)    //共有32个数组元素
        pnum[i]=i+1;
//***选号***//
    for(i=0;i<6;i++)
    {
        srand( (unsigned)time( NULL ) );
        temp=rand()%32+1; //得到一个1-32的数

      while(pnum[temp]==0)//如果此元素以被选过则重选
        {
               
            temp=rand()%32+1;
        }
        num[i]=temp; //选定一个号码
        pnum[temp]=0; //给该元素置0,表示已被选过,如再有视为无效。
    }
//***排序***//
    for(int chance=1;chance<6;chance++)
    {
        int position=chance; //元素排序用到的游标
        for(i=0;i<6;i++){
            if(num[position]>num[i]) //如果后面的元素大于前面的,就交换位置
                {
                temp=num[position];
                num[position]=num[i];
                num[i]=temp;
                }
        }
    }
//***显示***//
    srand((unsigned)time(NULL));
    int blue=rand()%16+1;
    m_num1=num[0];
    m_num2=num[1];
    m_num3=num[2];
    m_num4=num[3];
    m_num5=num[4];
    m_num6=num[5];
    m_num7=blue;
    UpdateData(FALSE); //通过变量刷新Edit控件的显示
}

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.