How to initialize boost::random::discrete_distribution using std::vector?
Asked Answered
V

1

6

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?

Vandyke answered 26/10, 2011 at 14:28 Comment(0)
S
10

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());
Siesta answered 26/10, 2011 at 14:34 Comment(1)
do you know how to solve this? [link](#48014302 ) It is almost the same, but with a vector of distributions.Knurly

© 2022 - 2024 — McMap. All rights reserved.