我有一个用1到100之间的数字初始化的std :: vector
std::vector<int> vec;
for(int i = 1; i < 101; i++)
vec.push_back(i);
我想选择两个距离最小的随机整数(例如最小距离可以是10)。
如果num1,num2是数字:
num2 - num1&gt;距离
我使用以下方法选择范围之间的随机整数:
int getRandomValue(int from, int to)
{
std::random_device seeder;
std::mt19937 engine(seeder());
std::uniform_int_distribution<int> dist(from, to);
return dist(engine);
}
如何生成num2和num1?
答案 0 :(得分:4)
您可以使用以下内容:
num1 = getRandomValue(minRange, maxRange - distance - 1);
num2 = getRandomValue(num1 + distance + 1, maxRange);
请注意,它不是对结果的均匀分布。
答案 1 :(得分:0)
你可以随机化每个例子的num1并总结距离,然后你有num2。
但你必须小心,因为num1必须低于或等于100距离
或oposite随机化num2从10到100和num1 = num2-distance
答案 2 :(得分:0)
#include <cstdlib>
a = rand() % 90;
b = a + 10;
a越小,b越大