我做的一个程序,中间用到产生随机数,但是我不明白为什么开始时候数字都是随机的,但后来一直是return 8 ? int Cppl_wjrDlg::Pick(int x,int y)            
{
  x*=(unsigned)time(NULL)%10000000;
  srand(x+y);
  
  return (rand()%8+1);
}其中调用Pick()的代码是for(j=1;j<=8;j++)
 {
root=(root*j+1)%10000000; color[1][j]=Pick(root,j);
    
 }多谢帮忙~~

解决方案 »

  1.   

    楼主可以看看这个
    希望对你有帮助。
    http://topic.csdn.net/u/20080823/22/88fe845c-10c8-4736-a72a-dbd9bbdf6419.html
      

  2.   

    srand(x+y); 不要在Pick函数中执行,只需要在系统初始化中执行一次就可以了
      

  3.   


    多谢几位的帮助了,小弟明白了~~还有就是想问一下 ok1234567 ,为什么程序运行过程中,多次用srand()就会出现那个问题呢?
      

  4.   

    为什么程序运行过程中,多次用srand()就会出现那个问题呢?
    等于你自己在生成随机数,因为同样的种子将生成同样的随机数序列