如何使用std :: vector初始化boost :: random :: discrete_distribution?

时间:2011-10-26 14:28:18

标签: c++ visual-studio-2010 boost vector boost-random

我想用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<>的正确方法是什么?

1 个答案:

答案 0 :(得分:10)

该类似乎有takes an iterator range的构造函数。这将与这样的矢量一起使用:

std::vector<double> probs = ...;
boost::random::discrete_distribution<> dist(probs.begin(), probs.end());