rand();总是会出现重复

解决方案 »

  1.   

    if(重复)
     then(rand();)
    else
     记录
      

  2.   

    rand()%100就是0-100间的随机数
    放到数组里面,新形成的判断是否重复,重复重新形成
      

  3.   

    int i;
    srand( (unsigned)time( NULL ) );
    for( i = 0;   i < 10;i++ )
    printf( "  %6d\n", rand()%100 );
    没有你说的数字最高两位是递增的情况,你的产生过程是否有问题,如果不重复的话,你希望在多大范围不重复呢,如果产生很多的话,按照鸽笼原理,肯定会有重复的吧
      

  4.   

    函数体外,使用 srand((unsigned)time(NULL)); 播种. #include "time.h"
    #define MAX_NUM 100
    int flag[100]; 循环调用GetOnceNum()的循环体中不可包括 srand,否则出现搂主的问题.int GetOnceNum()
    {
    int m_iRand;m_iRand = rand()% MAX_NUM;int isOnce = 1;//线性探测已出现数据
    while(flag[m_iRand])    //flag[i]为1表示已产生过,0表示未产生。
    {
      if (m_iRand >= MAX_NUM - 1)
      {
        if (isOnce)
        {
          isOnce = 0;
          m_iRand = 0;
        }
        else
          return -1;
      }
      else
        m_iRand++;
    }  flag[m_iRand] = 1;
      return m_iRand;
    }