1.53.0時点でのBoost.Randomのdiscrete_distribution
に、マイナスの確率を指定すると、発生してしまいます。動的に確率が変動するコードを書いてる場合は、マイナスが混入しないよう気をつけましょう。
#include <iostream> #include <boost/random.hpp> int main() { boost::random::mt19937 gen; boost::random::discrete_distribution<> dist({-2.0, -3.0, 1.0}); for (int i = 0; i < 10; ++i) { std::cout << dist(gen) << std::endl; } }
1 0 0 1 1 1 1 0 0 0