Boost.Randomで適当な分布関数を用いる

Boost.Randomの利点は、generator(乱数生成器)とdistribution(分布関数)を分離できるところです。d:id:faith_and_brave:20090629:1246263401であげられている、「80%の確率で0, 20%の確率で1」といった事例は、まさにBernoulli Distributionそのものなので、次のように書いたほうが分布関数の意味がわかりやすいと思います。

#include <iostream>
#include <ctime>
#include <boost/random.hpp>

using namespace boost;

int main(int, char**)
{
    mt19937 gen(static_cast<unsigned long>(std::time(0)));
    bernoulli_distribution<> dst(0.2);// 0.2の確率でtrue
    variate_generator<mt19937, bernoulli_distribution<> > rand(gen, dst);

    for (int i = 0; i < 10; i++) {
        std::cout << rand() << std::endl;
    }
}