获取两个间隔之间的随机数

时间:2016-07-26 20:32:08

标签: c++

我想在两个间隔之间得到一个随机数,1,4和8,16

要获得一个间隔之间的随机数,我必须这样做:

randNumber = random(1, 3);

如果我希望我的变量有可能成为8到16之间的数字,而不仅仅是1到4之间怎么办?

谢谢。

1 个答案:

答案 0 :(得分:3)

这是一个简单的解决方案,有50%的几率在两个区间内:

if (rand() % 2){
    return rand() % 4 + 1;
} else {
    return rand() % 8 + 8;
}

否则,如果您希望将分布加权到间隔的大小:

int num = rand() % 12 + 1;
if (num >= 4) num += 4;
return num;