確率に応じてboolを返す。その2

探したら普通にありましたorz
std::bernoulli_distributionというクラスです。使い方は以下の通り。確率0.2でtrueを返します。

std::mt19937 random;
std::bernoulli_distribution bd( 0.2 );
for( int i = 0; i < 100000; ++i ){
	if( bd( random ) ){
		count[0]++;
	}else{
		count[1]++;
	}
}
std::cout << "true = " << count[0] << std::endl;
std::cout << "false = " << count[1] << std::endl;

コンストラクタで確率を入れて、operator()でboolが帰ってきます。
ちなみにベルヌーイ分布っていうんですね。初めて知りましたorz