|
Текст подпрограммы и версий gsu4i_p.zip |
Тексты тестовых примеров tgsu4i_p.zip |
Генерация массива целых псевдослучайных чисел, равномерно распределенных в заданном отрезке.
Псевдослучайные числа NR (J) вычисляются по формуле:
NR(J) = NA + INT( (NA - NB + 1) * R01(J) ) ,
где NA, NB - заданные границы отрезка ,
INT - операция взятия целой части числа ,
R01 (J) - псевдослучайные числа ,
pавномеpно распределенные в интервале (0, 1) ,
вычисленные с помощью подпрограммы GSU1R .
Д.Кнут. Искусство программирования для ЭВМ, т. 2. "Мир", M.: 1977.
procedure GSU4I(var ISEED :Integer; NA :Integer; NB :Integer;
N :Integer; var NRES :Array of Integer);
Параметры
| ISEED - | целая переменная, значение которой перед обращением к подпрограмме может быть любым целым числов в пределах [1, 2147483646]; по окончании работы ей присваивается новое значение, котоpое может быть использовано при последующих обращениях к подпрограмме; |
| NA - | левая граница отрезка (тип: целый); |
| NB - | правая граница отрезка (тип: целый); |
| N - | заданное количество генерируемых псевдослучайных чисел (тип: целый); |
| NR - | целый массив длины N, содержащий вычисленные псевдослучайные числа. |
Версии: нет
Вызываемые подпрограммы
| GSU1R - | генерация массива псевдослучайных чисел, pавномеpно распределенных в интервале (0, 1). |
Замечания по использованию: нет
Unit tgsu4i_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc, UtRes_p, GSU4I_p;
function tgsu4i: String;
implementation
function tgsu4i: String;
var
IS_,_i :Integer;
NR :Array [0..1] of Integer;
begin
Result := '';
IS_:= 2092213417;
GSU4I(IS_,-1,2,2,NR);
Result := Result + Format('%12d',[IS_]) + #$0D#$0A;
Result := Result + #$0D#$0A;
for _i:=0 to 1 do
begin
Result := Result + Format('%12d',[NR[_i]]);
if ( ((_i+1) mod 1)=0 )
then Result := Result + #$0D#$0A;
end;
Result := Result + #$0D#$0A;
UtRes('tgsu4i',Result); { вывод результатов в файл tgsu4i.res }
exit;
end;
end.
Результаты:
ISEED = 420124958
NR(1) = 0
NR(2) = -1