Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 获取两个间隔之间的随机数_C++ - Fatal编程技术网

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

C++ 获取两个间隔之间的随机数,c++,C++,我想得到一个介于1,4和8,16之间的随机数 要获得一个间隔之间的随机数,我必须执行以下操作: randNumber = random(1, 3); 如果我希望我的变量也有可能是8到16之间的数字,而不仅仅是1到4之间的数字,该怎么办 谢谢。这里有一个简单的解决方案,它有50%的几率在两个时间间隔内: if (rand() % 2){ return rand() % 4 + 1; } else { return rand() % 8 + 8; } 否则,如果希望将分布加权到间

我想得到一个介于1,4和8,16之间的随机数

要获得一个间隔之间的随机数,我必须执行以下操作:

randNumber = random(1, 3);
如果我希望我的变量也有可能是8到16之间的数字,而不仅仅是1到4之间的数字,该怎么办


谢谢。

这里有一个简单的解决方案,它有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;

用所有池号填充容器,然后生成一个随机数,作为该容器的索引。然后生成随机索引并选择您的值。以下是如何在一定范围内生成或仅根据容器大小使用%模块。使用
std::uniform_int_distribution
并设置所需的限制。我认为OP正在寻找。因为我无法在此处发布任何答案:If
std::vector NumbersPool={1,2,3,4,8,9,10,11,12,13,14,15,16}
是您的数字池,然后
int MyRandomNumber=NumbersPool[rand()%NumbersPool.size()]
是该池中的一个随机数。@第一步,另一个有趣的诀窍是您得到的加号。在不希望重复的情况下非常有用:只需复制并删除第一个元素,直到池为空。这不会在程序第一次运行时给出完全相同的数字吗?也许。我不是作为一个完整的程序写的,而是作为一个函数体写的。在更大的应用程序环境中,应该正确地为随机数函数设定种子。