【发布时间】:2010-07-01 16:13:57
【问题描述】:
gcc 4.4.4 c89
我正在使用下面的代码。但是,我一直收到相同的号码:
size_t i = 0;
for(i = 0; i < 3; i++) {
/* Initialize random number */
srand((unsigned int)time(NULL));
/* Added random number (simulate seconds) */
add((rand() % 30) + 1);
}
我希望返回 0 到 30。但是,我上次运行这个时,我得到了 17 次 3 次。
非常感谢,
【问题讨论】:
-
注意:0 到 30 实际上是 31 个唯一值。您的代码将始终返回 1 到 30。如果您真的需要 0-30,您应该 %31(没有“+ 1”)。 Off by 1 错误很容易被忽略。 (在这种情况下显然是 9 年)。
标签: c