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;