Скачиваний:
31
Добавлен:
01.05.2014
Размер:
1 Кб
Скачать
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