写一个返回指定范围的随机数函数遇到了点麻烦,下面代码是我简化后测试的:

int GetRand1()
{
    srand((unsigned)time(NULL));
    return rand();
}

int main()
{
    int i;
    for(i=0;i<20;i++)
        cout<<GetRand1()<<endl;
    return 0;
}

每次得到的20个随机数都是同一个??

还有每次运行程序得到的随机数不同,但短时间内相差不大??

比如第一次运行,我得到18581,第二次我得到18594,第三次也就比第二次略大...

什么原因??要怎么解决??难道要用微秒级的来作种子,这不是搞复杂了,效率也变低了??

欢迎各大神小神的指导

推荐图书

  • C++ Primer中文版(第4版)
  • More Effective C++:35个改善编程与设计的有效方法(中文版)
  • 设计模式:可复用面向对象软件的基础


1个回答

随机数种子只设置一次就好..

int GetRand1()
{

  return rand();
}

int main()
{
srand((unsigned)time(NULL));
  int i;
  for(i=0;i<20;i++)
  cout<<GetRand1()<<endl;
  return 0;
}