Текст подпрограммы и версий
sf57r_c.zip  sf57d_c.zip 
Тексты тестовых примеров
tsf57r_c.zip  tsf57d_c.zip 

Подпрограмма:  sf57r_c

Назначение

Вычисление функции гипергеометрического распределения вероятностей H (N, L ; N1).

Математическое описание

sf57r_c вычисляет вероятность того, что случайная величина, подчиненная закону гипергеометрического распределения вероятностей, меньше или pавна  k.

Другими словами, sf57r_c вычисляет вероятность того, что некоторая случайная бесповторная выборка объема  L содержит точно или меньше  k элементов класса 1, если эта выборка производится из генеральной совокупности N элементов, среди которых N1 элементов принадлежит классу 1:

     P (x = k) = CkN1 CL-kN-N1 /  CLN ,


     P (x ≤ k) = P (x = k) + P (x = k - 1) + ... + P (x = 0) .

Здесь  N ≥ L ≥ 1 ,   N ≥ N1 = q N ≥ 0 ,   N ≥ k ≥ 0 . 

M.Abramowitz, I.A.Stegun, Handbook of Mathematical unctions, New York, Dover Publications, Inc., 1965.

Использование

    int sf57r_c (integer *k, integer *n, integer *l,
            integer *n1, real *p, real *q, integer *ierr)

Параметры

k - заданное значение аргумента  k (тип: целый);
n - заданное число элементов генеральной совокупности (тип: целый);
l - заданный объем случайной бесповторной выборки (тип целый);
n1 - заданное число элементов в генеральной совокупности, принадлежащих интересующему классу (тип: целый);
p - вещественная переменная, значение которой в pезультате работы подпрограммы полагается равной вероятности того, что случайная величина pавна k;
q - вещественная переменная, значение которой в pезультате работы подпрограммы полагается равной вероятности того, что случайная величина меньше или pавна k;
ierr - целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; при этом:
ierr=65 - когда заданное значение числа элементов генеральной совокупности меньше 1;
ierr=66 - когда значение параметра k не принадлежит отрезку (0, l);
ierr=67 - когда заданный объем случайной выборки не принадлежит отрезку (1, n);
ierr=68 - когда значение параметра n1 не принадлежит отрезку (0, n).

Версии

sf57d_c - вычисление функции гипергеометрического распределения вероятностей с повышенной точностью.

Вызываемые подпрограммы

utsf14_c - подпрограмма выдачи диагностических сообщений при работе подпрограммы sf57r_c.
utsf15_c - подпрограмма выдачи диагностических сообщений при работе подпрограммы sf57d_c.

Замечания по использованию

  В sf57d_c параметры p и q должны иметь тип double.

Пример использования

int main(void)
{
    /* Local variables */
    static int ierr;
    extern int sf57r_c(int *, int *, int *, int *, float *, float *, int *);
    static int k, l, n;
    static float p, q;
    static int n1;

    k = 2;
    n = 32;
    l = 2;
    n1 = 4;
    sf57r_c(&k, &n, &l, &n1, &p, &q, &ierr);

    printf("\n %16.7e %16.7e %5i \n",p,q,ierr);
    printf("\n %5i %5i %5i %5i \n",k,n,l,n1);
    return 0;
} /* main */


Результаты:

       p  =  0.012096774193
       q  =  1.
       ierr  =  0