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);}结果:
相关文章推荐
- C++库研究笔记——生成一组随机数
- php学习笔记之动态生成一组单选button
- 随机生成一组随机数(带字母和数字)
- Js生成随机数的研究
- Lua笔记:生成随机数
- java 生成一组不重复的随机数
- JAVA生成总和及个数确定的一组随机数
- 【Lua笔记】Lua中生成随机数
- 生成一组指定范围内随机数(取50个数字,100到200的随机数字) LINQ方法
- 返回一组不重复随机数生成方法-(完美,100%不重复)
- Untiy3D笔记之番外篇——c# 生成真正随机数
- JS 生成一组不重复的随机数
- C++学习笔记:随机数的生成、double和float的区别
- Python学习笔记(四)—生成随机数
- C++库研究笔记——doxygen资料记录
- [C#学习笔记]C#生成随机数的方法
- JS 生成一组不重复的随机数
- Java SE 学习笔记:字符串的处理操作,随机数的生成,date日期类与格式化操作
- java 生成一组不同的随机数(不重复)
- Python 生成一组随机数列表