Generator liczb pseudolosowych (cz.3) – rozkład Cauchy’ego
Witajcie, zgodnie z obietnicą, w tym odcinku generujemy liczby losowe z rozkładu Cauchy’ego.
Jak w poprzednim odcinku, użyjemy generatora rozkładu równomiernego. Kod metody getFromCauchyDistribution() wygląda następująco:
double RandomNumberGenerator::getFromCauchyDistribution() {
// generuj X o rozkładzie równomiernym U(-1,1)
double X = getFromUniformDistribution() * 2 - 1;
// generuj X o rozkładzie równomiernym U(0,1)
double U = getFromUniformDistribution();
if ((U + 0.27324) * (1 + X * X) > 1.27324) {
X = getFromUniformDistribution() * 2 - 1;
}
// uzupelnienie rozkładu o "ramiona"
if (getFromUniformDistribution() > 0.5) {
return X;
} else {
if (X != 0) {
return (1 / X);
} else {
return MAXDOUBLE;
}
}
}
Dowiedz się więcej »Generator liczb pseudolosowych (cz.3) – rozkład Cauchy’ego