关于C++的随机数的种子的设置问题

C++里面产生随机数。首先是用srand()函数设置种子对吧。种子设置的一般都是Time(NULL)对吧
但是,我想要在一个很多的循环内来用不同的随机数。但是Time(NULL)设置种子就导致一秒之内随机数是不变的,但是一秒内运行了好几多个循环过去了。。很困扰。。所以,我想问的就是这种情况下怎样更好的设置随机数的种子?
PS:曾经故意的让程序SLEEP()1秒。但是效率不高,这样不行。
求助

不是的,

srand( time(NULL) ) ;    //设置随机种子

这个设置随机种子的语句在程序里面只要做一次就好了,并且不能被调用多次,

就好像你不能写在 for( ) 语句里,这样就会每一次循环都会重新设置一次了,

当然就达不到你的效果了

#include<iostream>
using namespace std ;
#include <cstdlib>
#include <ctime>
void f()
{
    srand( time(NULL) ) ;    //每次调用时都重新设置种子了
    cout << rand() << endl ;
}
int main()
{
    f() ;
    f() ;    //这样f()三次调用的结果极有可能是相同的
    f() ;
    return 0 ;
}


正确的应该这样:

#include<iostream>
using namespace std ;
#include <cstdlib>
#include <ctime>
void f()
{
    cout << rand() << endl ;
}
int main()
{
    srand( time(NULL) ) ;     //在程序的开始设置种子,一次就可以了
    
    f() ;
    f() ;    //这样f()三次调用的结果就不会相同了
    f() ;
    return 0 ;
}


嗯,我是直接在浏览器上打的,如果有语法错误运行不了,在问我。。。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-05-19
设置 种子只要设一次就行了,可以用:时间 + 线程号(进程号)+ 缓冲区地址来设置
第2个回答  2014-05-19
相似回答