能力有限,不知道怎么在很段时间里面得到两个随机数。
我是想得到一个随机的坐标,因此要得到两个随机数,如果这两个随机数都是一样大,那得到的坐标就在一条线上。无意义。我是先得到系统的时间:毫秒,再以此为种子,然后取第一个随机数,然后再一个一万次的循环,然后再取系统的时间,然后又以毫秒为种子,去随机数,结果这两个数都是一样的请问怎么解决啊?

解决方案 »

  1.   

    给你两种方法:1、使用GetTickCount()作为种子,这是毫秒级别的,但仍有可能不行2、在程序启动时初始化种子,以后不用再初始化
      

  2.   


     srand((unsigned)time(NULL));   
      int   buf[n];   
      for(int   i=0;i<n;i++)   
      {   
              buf[i]=rand()%10;   
      }
      

  3.   

    这是我的源代码。产生的两个随机数效果很好~~~供参考
    void CSnake_ZYDlg::CreatRandNum(SnakeDot & temp)
    {
    srand(::GetTickCount());
    temp.x=rand()%20;
    srand(rand());
    temp.y=rand()%20;
    temp.Next=NULL;
    }