指定范围的随机数的std :: discrete_distribution

use*_*006 0 c++ random c++11 c++14

我知道我可以这样使用std::discrete_distribution:

std::default_random_engine generator;
std::discrete_distribution<int> distribution {2,2,1,1,2,2,1,1,2,2};

int p[10]={};

for (int i=0; i<100; ++i) {
    int number = distribution(generator);
    ++p[number];
}
Run Code Online (Sandbox Code Playgroud)

但是,这将根据指定的重量生成0-9范围内的数字.

如何在用户指定的范围内生成数字,例如24-33或95-104等但仍然使用discrete_distribution中指定的分布,我该怎么办?

小智 5

您只需将24或95添加到生成的数字即可.在开头你有0到9之间的数字,当你向他们添加24时,你有24到33的数字.