円内一様分布サンプリング; Inside Circular Uniform Distribution Sampling
概要
円内一様分布とは以下の式で表現される確率分布。単位円領域内に一様に分布する2変量確率変数を表現する。
$$ f(\theta, r) = \frac{1}{\pi}, \quad -\pi \leq \theta \lt \pi, 0 \leq r \leq 1 $$
ソースコード
namespace ExRandom.MultiVariate {
public class InsideCircularRandom : Random<double>{
readonly MT19937 mt;
public InsideCircularRandom(MT19937 mt) {
if(mt == null) {
throw new ArgumentNullException();
}
this.mt = mt;
}
public override Vector<double> Next() {
double theta, r;
theta = 2 * Math.PI * mt.NextDouble_OpenInterval1();
r = Math.Sqrt(mt.NextDouble());
return new Vector<double>(r * Math.Cos(theta), r * Math.Sin(theta));
}
}
}
関連項目
メルセンヌ・ツイスタ
各種確率分布サンプリング基本クラス