各位高手:
    我在用VC++写一程序的时候遇见一个问题,苦思不得其解,望各位指教。
    问题,需要每次调用一个方法时产生8个不同的随机数,其中四个要求是奇数。其他的4个无要求。我用rand()发现不行,再其前面用srand(CTime.GetSecond)程序运行时会报错。应该如何解决呢?
    谢谢各位高手。

解决方案 »

  1.   

    不是每调用一次rand就需要调用一次srand的!记住srand只调用一次!
    至于产生偶数就太简单了!你用生成的随机数除以2判断一下是不是偶数不就可以了!
    不是的话加上或减去一个1不就OK了吗!
      

  2.   

    那么要将srand()放在什么位置呢?
      

  3.   

    srand( (unsigned)time( NULL ) );
      

  4.   

    你可以放在构造函数中啊!最好用srand( (unsigned)time( NULL ) );这个方法·
      

  5.   

    isdong(有些事情应该忘记):
        你的方法我也试过,不行:(
      

  6.   

    edrftgyh(老胡) CString s;
    li_Num = (int)(li_RowNumber * (rand()/RAND_MAX));
    while (li_Num%2==0)
    {
         li_Num = (int)(li_RowNumber * (rand()/RAND_MAX));
         //AfxMessageBox(s);
         //s.Format("%d",li_Num);
    }int li_RandNumOne = li_Num;
    //第二个随机数
    li_Num = (int)(li_RowNumber * (rand()/RAND_MAX));
    while (li_Num%2==0 || li_Num==li_RandNumOne) {
         li_Num = (int)(li_RowNumber * (rand()/RAND_MAX));
    }
    int li_RandNumTwo = li_Num;
    //第三个随机数
    li_Num = (int)(li_RowNumber * (rand()/RAND_MAX));
    while (li_Num%2==0 || li_Num==li_RandNumOne || li_Num==li_RandNumTwo) {
         li_Num = (int)(li_RowNumber * (rand()/RAND_MAX));
    }
    int li_RandNumThree = li_Num;
    //第四个随机数
    li_Num = (int)(li_RowNumber * (rand()/RAND_MAX));
    while (li_Num%2==0 || li_Num==li_RandNumOne || li_Num==li_RandNumTwo || li_Num==li_RandNumThree) {
         li_Num = (int)(li_RowNumber * (rand()/RAND_MAX));
    }
    int li_RandNumFour = li_Num;看一下这段程序,在类的构造方法中也加入了srand((unsigned)time(NULL));但还是不行,一运行就进入死循环