コーシー分布サンプリング; Cauchy Distribution Sampling
概要
コーシー分布とは以下の式で表現される確率分布。分光学ではスペクトル線の形状を記述するために用いられる。なお、この分布は期待値も分散ももたない。
分布の裾が重く、コーシー分布に従う母集団から得られた標本には非常に大きな値が含まれている場合があるため、得られた平均値には意味をなさない。
$$f(x)=\frac{1}{\pi} \frac{\gamma}{(x-\mu)^2+\gamma^2} $$
コーシー分布に従う確率変数の生成には逆関数法を用いる。累積確率分布の逆関数\(F^{-1}(p)\)を導出し、\(p\)に開区間(0,1)の連続一様分布に従う確率変数を与える。
$$F^{-1}(p)=\mu + \gamma \tan(\pi(p-1/2)) $$
ソースコード
namespace ExRandom.Continuous {
public class CauchyRandom : Random{
readonly MT19937 mt;
readonly double gamma, mu;
public CauchyRandom(MT19937 mt, double gamma = 1, double mu = 0) {
if(mt == null) {
throw new ArgumentNullException();
}
this.mt = mt;
this.gamma = gamma;
this.mu = mu;
}
public override double Next() {
double u = mt.NextDouble_OpenInterval01() - 0.5;
return mu + gamma * Math.Tan(Math.PI * u);
}
}
}
関連項目
メルセンヌ・ツイスタ
各種確率分布サンプリング基本クラス