头文件:#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应该只执行一次。
我想到,在类的构造函数中初始化种子,这样就可以了。