Data Structure for Dynamic Discrete Probability Distributions
github.comOptions like std::discrete_distribution don't allow updates, in Rust e.g. https://docs.rs/rand_distr/latest/rand_distr/weighted/struct... allows updates but sampling is O(log n) and updating is also O(log n).
This neat data structure has a great set of tradeoffs.