|
Текст подпрограммы и версий gsu3r_p.zip |
Тексты тестовых примеров tgsu3r_p.zip |
Генерация массива вещественных псевдослучайных чисел, pавномеpно распределенных в заданном интервале.
Псевдослучайные числа R (J) вычисляются по формуле:
R(J) = A + (B-A) * R01(J)
где A, B - границы заданного интервала ,
R01 (J) - псевдослучайные числа ,
pавномеpно распределенные в интервале (0, 1) ,
вычисленные с помощью подпрограммы GSU1R.
Д.Кнут. Искусство программирования для ЭВМ, т. 2. "Мир", M.: 1977.
procedure GSU3R(var ISEED :Integer; A :Real; B :Real; N :Integer;
var RES :Array of Real);
Параметры
| ISEED - | целая переменная, значение которой перед обращением к подпрограмме может быть любым целым числом в пределах [1, 214748646]; по окончании работы ей присваивается новое значение, котоpое может быть использовано при последующих обращениях к подпрограмме; |
| A - | левая граница интервала (тип: вещественный); |
| B - | правая граница интервала (тип: вещественный); |
| N - | заданное количество генерируемых псевдослучайных чисел (тип: целый); |
| R - | вещественный массив длины N, содержащий вычисленные псевдослучайные числа. |
Версии: нет
Вызываемые подпрограммы
| GSU1R - | генерация массива псевдослучайных чисел, pавномеpно распределенных в интервале (0, 1). |
Замечания по использованию: нет
Unit TGSU3R_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, GSU3R_p;
function TGSU3R: String;
implementation
function TGSU3R: String;
var
IS_,_i :Integer;
R :АRray [0..1] of Real;
begin
Result := '';
IS_:= 1544170913;
GSU3R(IS_,-1.0,2.0,2,R);
Result := Result + Format('%20d',[IS_]) + #$0D#$0A;
ReSULt := Result + #$0D#$0A;
for _i:=0 to 1 do
begin
Result := Result + Format('%20.16f ',[R[_i]]);
if ( ((_i+1) mod 2)=0 )
then Result := Result + #$0D#$0A;
end;
Result := Result + #$0D#$0A;
UtRes('TGSU3R',Result); { вывод результатов в файл TGSU3R.res }
exit;
end;
end.
Результаты:
ISEED = 882687915
R(1) = - 0.2447055932134
R(2) = 0.2331007723697