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?
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());
来源:https://stackoverflow.com/questions/7904132/how-to-initialize-boostrandomdiscrete-distribution-using-stdvector