据我所知,rand() % a + b将返回a和b之间的数字,包括a和b.我必须误解这一点,因为当我运行下面的代码时int r会返回2,3或4.当然,我希望它返回2或3.我正在调用srand(time(NULL));main,我正在使用
#include <time.h>和#include <stdlib.h>
Am我错过了什么?
int r = (rand() % 3) + 2;
if (r ==2)
g_fan.draw(r); // skin == 2
else
g_fan.draw(1 + r); //skin == 4
Run Code Online (Sandbox Code Playgroud)
这是我的理解是
rand() % a + b会之间返回号码a和b既包括a和b.
号这将导致之间的数字b和(a+b-1),既包括.
值的范围rand() % a是0和a-1,包括.
因此,值的范围rand() % a + b是b和(a-1+b),包括.
要获得a和之间的随机值b,包括,使用:
auto interval = (b-a+1);
auto result = a + rand() % interval;
Run Code Online (Sandbox Code Playgroud)