小编Raf*_*ger的帖子

C: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 random macos srand

3
推荐指数
1
解决办法
1228
查看次数

标签 统计

c ×1

macos ×1

random ×1

srand ×1