您的位置:首页 > 其它

C++库研究笔记——生成一组随机数

2013-08-03 12:52 183 查看
当试图用srand(time(0))rand()生成一组随机数时发现,生成的数字很多都是「一样」的经过测试:srand(seed); rand() 生成随机数,当seed一样时,生成的随机数相同。所以上述「一样」的问题应该出在time(0)所以最后采用的方式是:sleep+ 高精度计时,+srand(gettime_function) +rand()不过,
把gettimeofday换成更高精度可能效果更好
代码如下(Linux下)
#include <stdlib.h> // for srand
#include <limits>
#include <time.h>   // for nanosleep
#include <sys/time.h>   // for gettimeofday
/// generate random number between 0~1inline float randf(void){    struct timespec tim;    tim.tv_sec=0; tim.tv_nsec=1e4;    nanosleep(&tim, 0);    struct timeval cur;    gettimeofday(&cur, 0);    srand(cur.tv_usec);    return rand()/float(RAND_MAX);}inline int randi(int max=1e6){    struct timespec tim;    tim.tv_sec=0; tim.tv_nsec=1e4    nanosleep(&tim, 0);    struct timeval cur;    gettimeofday(&cur, 0);    srand(cur.tv_usec);     return rand()%(max+1);}
结果:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: