Текст подпрограммы и версий gse1r_p.zip |
Тексты тестовых примеров tgse1r_p.zip |
Генерация массива псевдослучайных чисел, имеющих экспоненциальное распределение со средним значением XM и дисперсией XM.
Экспоненциально распределенные псевдослучайные числа R (I) вычисляются по формуле
R(I) = -XM*ln(U(I)) , XM≥0 ,
где XM - параметр экспоненциального распределения (среднее и дисперсия), U (I) - pавномеpно распределенные псевдослучайные числа, получаемые с помощью GSU1R.
Д.Кнут, Искусство программирования для ЭВМ, т. 2, "Мир", M., 1977, стp. 141-142.
procedure GSE1R(var ISEED :Integer; XM :Real; var N :Integer; var R :Array of Real);
Параметры
ISEED - | целая переменная, значение которой перед обращением к подпрограмме может быть любым целым числом в пределах [1,2147483646]; по окончании работы ей присваивается новое значение, котоpое может быть использовано при последующем вхождении в подпрограмму; |
XM - | заданный параметр экспоненциального распределения (тип: вещественный); |
N - | заданное количество генерируемых псевдослучайных чисел (тип: целый); |
R - | вещественный массив длины N, содержащий вычисленные псевдослучайные числа. |
Версии: нет
Вызываемые подпрограммы
GSU1R - | генерация массива псевдослучайных чисел, pавномеpно распределенных в интервале (0, 1). |
Замечания по использованию: нет
Unit TGSE1R_p; interface uses SysUtils, Math, { Delphi } LStruct, Lfunc, UtRes_p, GSE1R_p; function TGSE1R: String; implementation function TGSE1R: String; var ISEED,N,_i :Integer; ХМ :Real; R :Array [0..2] of Real; begin Result := ''; ISEED := 408805506; N := 3; ХМ := 1.0; GSE1R(ISEED,XM,N,R); Result := Result + Format('%s',[' PEЗУЛЬTAT']); Result := Result + #$0D#$0A; for _i:=0 to 2 do begin Result := Result + Format('%20.16f',[R[_i]]); if ( ((_i+1) mod 1)=0 ) then Result := Result + #$0D#$0A; end; Result := Result + #$0D#$0A; UtRes('TGSE1R',Result); { вывод результатов в файл TGSE1R.res } exit; end; end. Результаты: R(1) = 0.770362531059 R(2) = 3.21917896882 R(3) = 2.57395311171