我有以下的C语言代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[]) {
srand(time(NULL));
printf("%d\n", (int)random());
return 0;
}
据我理解,每次执行该程序都应该打印出不同的随机数,因为随机种子是依赖于系统时间的。但是每次运行程序,我得到的输出都完全相同。
1804289383
当我将自定义值作为srand的参数时,我仍然得到相同的输出结果。
srand(1);
或者
srand(12345);
有人知道为什么会出现这种情况吗?也许是因为我的操作系统(Mac OS 10.10.3)或我使用的编译器(gcc)?
是否有简单的替代方案?
random()
是什么?也许它与srand()
无关?或者你的意思是要使用rand()
?你需要使用srandom()
来设置random()
的种子。 - juanchopanzasrand
用于设置rand
的种子,而不是random
的种子,random
的种子需要使用srandom
。 - M Oehm