Текст подпрограммы и версий
gse1r_c.zip
Тексты тестовых примеров
tgse1r_c.zip

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

Назначение

Генерация массива псевдослучайных чисел, имеющих экспоненциальное распределение со средним значением XM и дисперсией XM.

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

Экспоненциально распределенные псевдослучайные числа R (I) вычисляются по формуле

     R(I) = -XM*ln(U(I)) ,  XM≥0 ,

где XM - параметр экспоненциального распределения (среднее и дисперсия), U (I) - pавномеpно распределенные псевдослучайные числа, получаемые с помощью gsu1r_c.

Д.Кнут, Искусство программирования для ЭВМ, т. 2, "Мир", M., 1977, стp. 141-142.

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

    int gse1r_c (integer *iseed, real *xm, integer *n, real *r__)

Параметры

iseed - целая переменная, значение которой перед обращением к подпрограмме может быть любым целым числом в пределах [1,2147483646]; по окончании работы ей присваивается новое значение, котоpое может быть использовано при последующем вхождении в подпрограмму;
xm - заданный параметр экспоненциального распределения (тип: вещественный);
n - заданное количество генерируемых псевдослучайных чисел (тип: целый);
r - вещественный массив длины n, содержащий вычисленные псевдослучайные числа.

Версии:  нет

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

gsu1r_c - генерация массива псевдослучайных чисел, pавномеpно распределенных в интервале (0, 1).

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

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

int main(void)
{
    /* Local variables */
    extern int gse1r_c(int *, float *, int *, float *);
    static int n;
    static float r__[3];
    static int iseed;
    static float xm;

    iseed = 408805506;
    n = 3;
    xm = 1.f;
    gse1r_c(&iseed, &xm, &n, r__);

    printf("\n  %16.7e %16.7e %16.7e \n",r__[0],r__[1],r__[2]);
    return 0;
} /* main */


Результаты:
       r(1) = 0.770362531059
       r(2) = 3.21917896882
       r(3) = 2.57395311171