-- RT_C132A4A1 : Lecture des 20 premieres valeurs -- du GPA Wichmann & Hill -- Coyright Jacques-deric Rouault -- Version 1.1 du 2012030.5 WITH Text_io; USE Text_io; PROCEDURE RT_C132A4A1 IS PACKAGE IIO IS NEW Integer_io (Integer); PACKAGE FIO IS NEW Float_io (Float); randomx : INTEGER := 10_001; randomy : INTEGER := 20_001; randomz : INTEGER := 30_001; ax:CONSTANT INTEGER := 171; bx:CONSTANT INTEGER := 177; cx:CONSTANT INTEGER := 30269; fx:CONSTANT FLOAT := 30269.0; ay:CONSTANT INTEGER := 172; by:CONSTANT INTEGER := 176; cy:CONSTANT INTEGER := 30307; fy:CONSTANT FLOAT := 30307.0; az:CONSTANT INTEGER := 170; bz:CONSTANT INTEGER := 178; cz:CONSTANT INTEGER := 30323; fz:CONSTANT FLOAT := 30323.0; val : Float; Probleme : EXCEPTION; ------------------------------------------------------------------------------ FUNCTION wichmann_hill RETURN FLOAT IS -- Version 1.1 du 26 janvier 1995 w : FLOAT; BEGIN randomx:= ax*((randomx mod bx)-bx) - 2*(randomx/bx); IF randomx<0 THEN randomx:=randomx+cx; END IF; randomy:= ay*((randomy mod by)-by) - 2*(randomy/by); IF randomy<0 THEN randomy:=randomy+cy; END IF; randomz:= az*((randomz mod bz)-bz) - 2*(randomz/bz); IF randomz<0 THEN randomz:=randomz+cz; END IF; w:=FLOAT(randomx)/fx+FLOAT(randomy)/fy+FLOAT(randomz)/fz; RETURN w-FLOAT(INTEGER(w-0.5)); END wichmann_hill; ------------------------------------------------------------------------------ BEGIN Put_line ("Debut d'execution du programme Ada RT_C132A4A1"); FOR n IN 1..20 LOOP val:=wichmann_hill; iio.put (n,4); put (" - "); fio.put (val,3,7,0); new_line; END LOOP; Put_line ("Fin d'execution du programme Ada RT_C132A4A1"); EXCEPTION WHEN probleme => Put_line ("ERREUR : PROBLEME CALCUL Generateur_Pseudo_Aleatoire"); END RT_C132A4A1;