How to initialize boost::random::discrete_distribu

2019-02-13 18:12发布

I would like to initialize boost::random::discrete_distribution with an std::vector<double>.

My problem is that if I initialize it with an array, like in the official example:

double probabilities[] = {
    0.5, 0.1, 0.1, 0.1, 0.1, 0.1
};
boost::random::discrete_distribution<> dist(probabilities);

then it works perfectly.

However if I initialize it with a std::vector, then it behaves like if it has only one element with probability 1.0.

Can you tell me what is the right way of initializing a boost::random::discrete_distribution<> with a vector?

1条回答
做自己的国王
2楼-- · 2019-02-13 19:01

The class seems to have a constructor that takes an iterator range. This would be used with a vector like this:

std::vector<double> probs = ...;
boost::random::discrete_distribution<> dist(probs.begin(), probs.end());
查看更多
登录 后发表回答