with Ada.Text_IO;
with Ada.Integer_Text_IO;
with Ada.Numerics.Discrete_Random;
procedure Rand is
use Ada.Integer_Text_IO;
use Ada.Text_IO;
type Number is range - 1_000_000_000 .. + 1_000_000_000;
subtype Gen_Nums is Number range 1 .. 10_000;
Amount_To_Gen : Gen_Nums;
Lower_Bound, Higher_Bound : Number;
Columns : Number range 1..15;
package Number_Text_IO is new Ada.Text_IO.Integer_IO ( Number );
use Number_Text_IO;
begin
loop
begin
Put ( "Numbers : " ); Get ( Amount_To_Gen );
Put ( "Lower Bound : " ); Get ( Lower_Bound );
Put ( "Higher Bound : " ); Get ( Higher_Bound );
Put ( "Columns : " ); Get ( Columns );
exception
when others => raise;
end;
exit;
end loop;
declare
subtype Spec_Number is Number range Lower_Bound .. Higher_Bound;
package Spec_Number_Random is new Ada.Numerics.Discrete_Random ( Spec_Number );
use Spec_Number_Random;
Gen : Generator;
A_Rand_Num : Spec_Number;
Count : Integer := 1;
begin
Reset ( Gen );
For Iterator in 1..Amount_To_Gen loop
A_Rand_Num := Random ( Gen );
Put ( A_Rand_Num );
if Count = Integer ( Columns ) then
New_Line;
Count := 1;
else
Count := Count + 1;
end if;
end loop;
exception
when others => raise;
end;
exception
when Data_Error => Put ( "Data Error" );
when Constraint_Error => Put ( "Constraint Error");
end Rand;