with Standard_Floating_Numbers; use Standard_Floating_Numbers; with Standard_Random_Numbers; package body Multprec_Random_Numbers is function Random ( size : natural ) return Natural_Number is res : Natural_Number; arn : Array_of_Naturals(0..size); begin for i in arn'range loop arn(i) := Standard_Random_Numbers.Random(0,Base-1); end loop; res := Create(arn); return res; end Random; function Random ( size : natural ) return Integer_Number is res : Integer_Number; sig : double_float := Standard_Random_Numbers.Random; rnd : Natural_Number := Random(size); begin res := Create(rnd); if sig < 0.0 then Min(res); end if; Clear(rnd); return res; end Random; function Random ( size : natural ) return Floating_Number is res : Floating_Number; naturfrac : Natural_Number := Random(size); frac,expo : Integer_Number; begin frac := Create(naturfrac); Clear(naturfrac); expo := Create(-Decimal_Places(frac)); res := Create(frac,expo); Clear(frac); Clear(expo); return res; end Random; function Random ( size : natural ) return Complex_Number is res : Complex_Number; re : Floating_Number := Random(size); im : Floating_Number := Random(size); begin res := Create(re,im); Clear(re); Clear(im); return res; end Random; end Multprec_Random_Numbers;