Текст подпрограммы и версий gse1r_c.zip |
Тексты тестовых примеров tgse1r_c.zip |
Генерация массива псевдослучайных чисел, имеющих экспоненциальное распределение со средним значением 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