Ok, it is possible to give weights/probabilities in boost::random::discrete_distribution.
e.g.
double probabilities[] = { 0.5, 0.1, 0.1, 0.1, 0.1, 0.1 };
boost::random::discrete_distribution<> dist(probabilities);
Question: Once the object dist is constructed
(1)How to change one of the weights e.g. 0.5 to 0.3?
(2) How to reassign all the weights at once?
Create a new distribution object and use that instead.