< random >中有uniform_int_distribution 当我创建时,我定义了一个间隔。 我可以在创建后更改此间隔吗?
例如
std::uniform_int_distribution distr(0, 10);
// can I change an interval here ?
答案 0 :(得分:11)
只需为变量分配一个新的分布:
std::uniform_int_distribution<int> distr(0, 10);
distr = std::uniform_int_distribution<int>(5, 13);
或者,为此创建一个参数(@awesomeyi回答所需的分发对象创建,这仍然需要创建param_type对象)
std::uniform_int_distribution<int> distr(0, 10);
distr.param(std::uniform_int_distribution<int>::param_type(5, 13));
证明param_type适用(对于@stefan):
P是关联的param_type。它应该满足 CopyConstructible,CopyAssignable和EqualityComparable 要求。它还具有采用相同参数的构造函数 与D的构造函数相同的类型并具有成员函数 与D
的参数返回getter相同
http://en.cppreference.com/w/cpp/concept/RandomNumberDistribution
答案 1 :(得分:2)
您可以通过param()
功能。
std::uniform_int_distribution<int> distr(0, 10);
std::uniform_int_distribution<int>::param_type d2(2, 10);
distr.param(d2);