フレシェ分布サンプリング; Frechet Distribution Sampling
概要
フレシェ分布とは以下の式で表現される確率分布。
$$f(x)=\frac{\alpha}{\beta} \left( \frac{x-\lambda}{\beta} \right)^{-\alpha-1} exp \left( -\left(\frac{x-\lambda}{\beta}\right)^{-\alpha} \right) $$
ソースコード
namespace ExRandom.Continuous {
public class FrechetRandom : Random {
readonly MT19937 mt;
readonly double inv_alpha, beta, lambda;
public FrechetRandom(MT19937 mt, double alpha = 1, double beta = 1, double lambda = 0) {
if(mt == null) {
throw new ArgumentNullException();
}
if(!(alpha > 0) || !(beta > 0)) {
throw new ArgumentException();
}
this.mt = mt;
this.inv_alpha = 1 / alpha;
this.beta = beta;
this.lambda = lambda;
}
public override double Next() {
double u = mt.NextDouble_OpenInterval01();
return lambda + beta / Math.Pow(-Math.Log(u), inv_alpha);
}
}
}
関連項目
メルセンヌ・ツイスタ
各種確率分布サンプリング基本クラス
正規分布サンプリング