Raf*_*ger 3 c random macos srand
我有以下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)?
有简单的替代方案吗?
C中的标准随机数发生器rand(),可以播种srand(seed).
还有第二个随机数发生器random().这个随机发生器可以用该函数播种srandom(seed).(这两个生成器使用不同的状态,即使它们共享相同的实现.)
因此,只需选择正确的种子和RNG功能.
| 归档时间: |
|
| 查看次数: |
1228 次 |
| 最近记录: |