【发布时间】:2019-07-15 05:21:27
【问题描述】:
我在 c++ 中使用 rand() 函数,但每次我的代码都得到非常接近的数字`
int pickrandom(){
time_t t;
time(&t);
srand (t);
return rand();
}
我得到的数字如下:13809 13812 13812 13817
【问题讨论】:
-
因为它只是在第一次调用 IIRC 时归还种子,而该种子是你的时间。在
srand()呼叫之后再次呼叫rand()。 -
只播种一次。
-
另外,pseudo-random generation functionality in the standard C++ library 比
srand和rand多很多。我建议你改用它。 -
@Blaze -- 即使这是真的,再次调用
rand()也不能解决这个问题。问题来自于在每次调用rand()之前调用srand。 -
@PeteBecker 那是两个单独的错误。至少在我的机器上,至少在我的机器上快速连续运行时,仅调用一次
rand()仍会产生那些“相似”的结果。