【发布时间】:2013-07-24 15:34:49
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int randomnumber;
randomnumber = rand() % 10;
printf("%d\n", randomnumber);
return 0;
}
这是一个简单的程序,其中 randomnumber 是一个未初始化的 int 变量,旨在打印为 1 到 10 之间的随机数。但是,每当我一遍又一遍地运行时,它总是打印相同的数字。有人可以帮忙告诉我为什么会这样吗?谢谢你。
【问题讨论】:
-
了解
srand()。 -
您很可能在该选择中存在偏见。
-
@chris:是的,但这种情况下的偏见相当小;因为
RAND_MAX至少为 32767,偏差小于 3000 的一部分,如果您需要质量更好的伪随机数,您可能应该使用比rand()更好的东西。尽管如此,它可能还是值得解决的,特别是如果您想要更大的范围(接近RAND_MAX)。 comp.lang.c FAQ 的问题 13.16 显示了如何做到这一点。 -
@KeithThompson,确切地说,最好从正确开始而不是从问题开始,以后必须了解并解决它们。
-
your_lucky_number = (rand() % 10) + 1;而且,当然例如: int min=12;整数最大值=33; your_number = (rand() % (max+1-min)) + min;