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?

sth
  • 222,467
  • 53
  • 283
  • 367
hyperknot
  • 13,454
  • 24
  • 98
  • 153

1 Answers1

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());
sth
  • 222,467
  • 53
  • 283
  • 367
  • do you know how to solve this? [link](https://stackoverflow.com/questions/48013802/how-to-set-a-vector-of-discrete-distribution-c ) It is almost the same, but with a vector of distributions. – Moises Rojo Feb 12 '18 at 06:33