Скачиваний:
28
Добавлен:
01.05.2014
Размер:
1.2 Кб
Скачать
unit Randomizer;

interface

uses
SysUtils,
Math;

type
TDMRnd = class
protected
m_seed : Integer;

public
constructor Create(m : Integer); overload;
procedure SetSeed(m : Integer);
function nextDouble : Double;
function nextInt(max : Integer) : Integer;
function next(s : Integer; num:Integer) : Integer;
end;

implementation

constructor TDMRnd.Create(m : Integer);
begin
m_seed := m;
end;

procedure TDMRnd.SetSeed(m : Integer);
begin
m_seed := m;
end;

function TDMRnd.nextDouble : Double;
var
seed : Integer;
n : Double;
begin
seed := Random(m_seed);
seed := (seed * 9301 + 49297) mod 233280;
n := abs(seed / 233280);
Result := n;
end;

function TDMRnd.nextInt(max : Integer) : Integer;
var
seed : Integer;
n : Double;
begin
Result := Round(max * nextDouble);
end;

function TDMRnd.next(s : Integer; num:Integer) : Integer;
var
seed:LongInt;
begin
seed:=s*1034567+12345 ;
// seed:=s*196314+907633 ;
if seed >= num -1 then seed:= seed mod num;
Result:= seed;
end;

end.
Соседние файлы в папке DMCore