with Machines; use Machines; with Standard_Mathematical_Functions; use Standard_Mathematical_Functions; package body Standard_Random_Numbers is a : constant integer := 13849; m : constant integer := 65536; c : constant integer := 56963; seed : integer := Process_Id; function Random ( lower,upper : integer ) return integer is f : double_float; begin f := Random; -- f in [-1,1] f := 0.5*(double_float(upper-lower)*f + double_float(lower+upper)); -- f in [lower,upper] return integer(f); -- rounding the result to integer number end Random; function Random return double_float is x : double_float; begin seed := (a*seed + c) mod m; x := double_float(seed)/double_float(m); x := 2.0 * x - 1.0; return x; end Random; function Random return Complex_Number is begin return Create(Random,Random); end Random; function Random ( modulus : double_float ) return Complex_Number is arg : double_float; begin arg := PI*Random; -- in [-pi,+pi] return Create(modulus*COS(arg),modulus*SIN(arg)); end Random; function Random1 return Complex_Number is arg : double_float; begin arg := PI*Random; -- in [-pi,+pi] return Create(COS(arg),SIN(arg)); end Random1; end Standard_Random_Numbers;