【发布时间】:2012-04-07 13:32:47
【问题描述】:
我正在尝试生成 0 到 40(含)之间的随机数。 所以我实现的代码是这样的-
y=rand()%41;
但是每次我点击编译并点击运行。它输出相同的随机数。 比如说我在一个循环中运行它。
for(i=0;i<4;i++)
{
y=rand()%41;
printf("%d ",y);
}
每一次,输出都是相同的 4 个数字。它总是在终端上输出 14,2 等。不管怎样。
所以我的第一个问题是,为什么会这样?
其次,随机数生成器在 C 中是如何工作的?
我认为由于我包含 time.h 库,因此这些数字是通过使用系统时间的一些标准算法生成的。而且由于系统时间是不断变化的,所以每次运行程序时生成的数字也应该会发生变化。
【问题讨论】:
-
如果使用
rand() % x,其中x不除RAND_MAX,分布将不均匀。 -
但这不是重点。
-
@H2CO3 这就是为什么它是评论,而不是答案。