我有以下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;
}
Run Code Online (Sandbox Code Playgroud)
根据我的理解,每次执行程序时都应该打印一个不同的随机数,因为随机种子取决于系统时间.
但每次运行程序时,我都得到完全相同的输出:
1804289383
Run Code Online (Sandbox Code Playgroud)
当我将自定义值作为srand的参数时,我仍然得到相同的输出:
srand(1);
Run Code Online (Sandbox Code Playgroud)
要么
srand(12345);
Run Code Online (Sandbox Code Playgroud)
有没有人知道为什么会这样?也许是因为我的操作系统(Mac OS 10.10.3)?还是我用的编译器(gcc)?
有简单的替代方案吗?