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