Question

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?

Was it helpful?

Solution

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());
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top