我可以更改分发参数吗?

时间:2015-07-12 20:58:00

标签: c++ random

< random >中有uniform_int_distribution 当我创建时,我定义了一个间隔。 我可以在创建后更改此间隔吗?

例如

std::uniform_int_distribution distr(0, 10);
// can I change an interval here ?    

2 个答案:

答案 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);