http://www.adaconcept.com/programs/veletlenszamgeneralas.adb
--Rotter Gyorgy
--Veletlen(szam) generalast bemutato program
with Ada.Text_IO;
with Ada.Numerics.Discrete_Random; --diszkret ertekek veletlen generalasahoz hasznalhato genrikus csomag
with Ada.Numerics.Float_Random; --float generalashoz csomag (0.0..1.0 intervallumba eso szam generalasahoz)
use Ada.Text_IO;
--use Ada.Numerics.Float_Random; --akar...
procedure veletlenszamgeneralas is
procedure floatgeneralas is
G:Ada.Numerics.Float_Random.Generator; --letrehozunk egy generatort
f:float; --ennek a valtozonak adjuk ertekul a generalt 0.0..1.0 intervallumba eso szamot
begin
Ada.Numerics.Float_Random.Reset(G); --KELL!!! inicializaljuk a generatort (felkeszulunk a generalasra, idopontfuggo inicializalas)
f:=Ada.Numerics.Float_Random.Random(G);
put_line(float'image(f)); --a generalt szam stringge alakitasa es kiirasa
end floatgeneralas;
procedure diszkretgeneralas is
type diszkretertekek is (egy, ketto, harom); --a diszkretertekek tipus tipusertekeit szeretnenk veletlenszeruen generalni
package diszkret_generalo is new Ada.Numerics.Discrete_Random(diszkretertekek); --beagyazott generikus csomag peldanyositas, ekkor adjuk meg a tipusunkat, "amibol generalni" szeretnenk
--use diszkret_generalo; --akar use-olhatjuk is
G:diszkret_generalo.generator; --letrehozunk egy generatort
d:diszkretertekek; --ennek a valtozonak adjuk ertekul a generalt diszkretertekek tipusu erteket
begin
diszkret_generalo.reset(G); --KELL!!! inicializaljuk a generatort (felkeszulunk a generalasra, idopontfuggo inicializalas)
d:=diszkret_generalo.random(G); --igy generalunk
put_line(diszkretertekek'image(d)); --kiirjuk a generalt diszkretertekek tipusu erteket, figyeljuk meg, hogy a string-ge alakitas a sajat tipusunkra is ugyanugy megy, mint a beepitettekre
end diszkretgeneralas;
begin
Ada.Text_IO.Put_Line("Program indul");
diszkretgeneralas;
floatgeneralas;
Ada.Text_IO.Put_Line("Program vege");
end;