rand()
库函数时,它几乎总是会产生正数。
我观察到当在循环中仅调用一次rand()
库函数时,它几乎总是会产生正数。
for (i = 0; i < 100; i++) {
printf("%d\n", rand());
}
但是当我添加两个 rand()
调用时,生成的数字现在有更多的负数。
for (i = 0; i < 100; i++) {
printf("%d = %d\n", rand(), (rand() + rand()));
}
能有人解释一下为什么在第二种情况下我看到负数吗?PS:在循环之前,我用srand(time(NULL))初始化了种子。
rand()
无法产生负数。 - twentylemonRAND_MAX
是多少?你通常可以在stdlib.h
中找到它。(有趣的是,检查man 3 rand
,它只有一行描述:“不好的随机数生成器”。) - Jongwareabs(rand()+rand())
。我宁愿有一个正向未定义行为(UB)也不要有负向的! ;) - Vinicius Kamakura