本文主要是介绍linux c++ 中的 srand 和 rand,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
头文件:#include <unistd.h>
在用rand生成伪随机数时,一般以时间作为种子,如下:
srand((unsigned)time(NULL));
rand();
我在一个函数中用到了这个,像下面这样:
int func() {
srand((unsigned)time(NULL));
return rand() % 1000;
}
然后在一个线程threadLoop里调用 func,结果func返回的值老是一样。
原因是,CPU执行比较快,每次调用func时,重新初始化种子,导致rand产生的伪随机数一样。
所以,srand应该只执行一次。
我想到,在类的构造函数中初始化种子,这样就可以了。
这篇关于linux c++ 中的 srand 和 rand的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!