【发布时间】:2017-03-13 15:19:00
【问题描述】:
据我了解,rand() % a + b 将返回 a 和 b 之间的数字,包括 a 和 b。不过我一定是误解了这一点,因为当我运行int r 下面的代码时,将返回 2、3 或 4。当然,我希望它返回 2 或 3。我在 main 中调用 srand(time(NULL));我正在使用
#include <time.h> 和 #include <stdlib.h>
我错过了什么吗?
int r = (rand() % 3) + 2;
if (r ==2)
g_fan.draw(r); // skin == 2
else
g_fan.draw(1 + r); //skin == 4
【问题讨论】:
-
X%3在集合 (0,1,2) 中,因此添加 2 将使其在集合 (2,3,4) 中 -
这就是为什么
std::uniform_int_distribution这么好。 -
谢谢你,直到你这样说我才明白。我一直看到示例
rand() % 100 + 1,只是一直认为是rand () % max + min = random between min and max with both including。我现在完全明白了。非常感谢。