Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to initialize boost::random::discrete_distribution using std::vector?

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?

like image 728
hyperknot Avatar asked Oct 26 '11 14:10

hyperknot


1 Answers

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());
like image 87
sth Avatar answered Nov 14 '22 22:11

sth