我想用boost::random::discrete_distribution
初始化std::vector<double>
。
我的问题是,如果我用数组初始化它,就像在官方示例中那样:
double probabilities[] = {
0.5, 0.1, 0.1, 0.1, 0.1, 0.1
};
boost::random::discrete_distribution<> dist(probabilities);
然后它完美地运作。
但是,如果我使用std::vector
初始化它,那么它的行为就像它只有一个概率为1.0的元素。
您能告诉我使用向量初始化boost::random::discrete_distribution<>
的正确方法是什么?
答案 0 :(得分:10)
该类似乎有takes an iterator range的构造函数。这将与这样的矢量一起使用:
std::vector<double> probs = ...;
boost::random::discrete_distribution<> dist(probs.begin(), probs.end());