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

Подпрограмма:  GSU3R (модуль GSU3R_p)

Назначение

Генерация массива вещественных псевдослучайных чисел, 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