ベルヌーイ分布サンプリング; Bernoulli Distribution Sampling
概要
ベルヌーイ分布とは以下の式で表現される確率分布。確率\(p\)で1(成功)になり、確率\(1-p\)で0(失敗)になるベルヌーイ試行を意味する。
$$ P[X=k] = \begin{cases} 1 - p & \quad k = 0 \\ p & \quad k=1 \end{cases} $$
ソースコード
namespace ExRandom.Discrete {
public class BernoulliRandom : Random{
readonly MT19937 mt;
readonly double thr;
public BernoulliRandom(MT19937 mt, double thr = 0.5) {
if(mt == null) {
throw new ArgumentNullException();
}
if(!(thr >= 0) || thr > 1) {
throw new ArgumentException();
}
this.mt = mt;
this.thr = thr;
}
public BernoulliRandom(MT19937 mt, decimal thr) : this(mt, (double)thr){
}
public override int Next() {
return NextBool() ? 1 : 0;
}
public bool NextBool() {
return mt.NextDouble_OpenInterval1() < thr;
}
}
}
関連項目
メルセンヌ・ツイスタ
各種確率分布サンプリング基本クラス