这行代码生成一个从-9到9的数字:
std::uniform_int_distribution<int> vDist(-9, 9);
但是,我想要做的是从-9到9生成一个数字,除了 -3到3.我不希望随机数生成器给我一个数字-3到3。
如何编写代码以排除此内部范围?
答案 0 :(得分:2)
两种可能的解决方案:
<强>映射强>:
以[-6,5]之类的较小间隔进行采样,并定义将此间隔映射到
的1对1映射
[-9,-4] u [4,9]:
if (value < 0) value -= 3;
else value += 4; // if (value >= 0)
答案 1 :(得分:0)
我不是c ++,只是c#,但原则适用于所有语言。
你可以做一会儿循环,在每次迭代中生成一个新数字,并用if语句检查它,如果它大于-3且小于3。 如果是这样,继续使用while循环。
如果不是,它必须在你想要的范围内,你可以打破循环并存储你的价值。