【发布时间】:2020-06-07 10:57:45
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[]) {
srand((unsigned)time(NULL));
printf("%d\n", rand()%100+1);
printf("%d", rand()%100+1);
return 0;
}
我已经运行了很多次,每次第一个值都稳定增加,比如2 5 9 17 24 30 ..... 91 97 3 7 12(但值总是不同)。奇怪的是,第二个值执行正常,可能是什么原因?
我正在使用 Dev-C++ 和 TDM-GCC 4.9.2
【问题讨论】:
-
您使用的是什么平台和编译器版本?
rand()的实施通常很糟糕。如果可以,请使用random(),并使用srandom()播种。 -
@Thomas 我正在使用 Dev-C++ 和 TDM-GCC 4.9.2。
-
使用像大多数
rand()实现使用的简单线性同余生成器,像时间一样稳定增加的种子值将产生稳定增加的第一个数字,是的。
标签: c random random-seed