読者です 読者をやめる 読者になる 読者になる

Boost.Random discrete_distributionにマイナスの確率を渡さないようにしよう

C++

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