[Back to NUMBERS SWAG index]  [Back to Main SWAG index]  [Original]

{
> I would also like some possible suggestions on a good random generator
> function or Procedure that is easy to understand.
}


{ Given }

var Seed; {among your globals}

{ You could try seeding it with: }

Procedure Randomise;

var
   hour, min, sec, sex100: word;
   root: Longint;

begin

   GetTime(hour,min,sec,sec100); {from Dos or WinDos unit}
   root := hour shr 1;
   root := root * sec * sec100;
   root := root shr 16;
   Seed := LoWord(root);   {needs WinAPI unit}
end;

{And to get a "random" integer in the range 0 to N - 1: }

function Random(Target: Integer): Integer;

var
   work: Longint;

begin
   work := Seed * Seed;
   work := work shr 16;
   Seed := LoWord(work);
   Random := Seed mod Target;
end;


[Back to NUMBERS SWAG index]  [Back to Main SWAG index]  [Original]