1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | with Ada.Text_IO, Calendar; use Ada.Text_IO, Calendar; package body Random is X_initial : FLOAT_ITEM := 0.0; M : FLOAT_ITEM := 1.0; A : FLOAT_ITEM := 7.0; C : FLOAT_ITEM := 13.0 / 31.0; procedure Set_Seed is Time_And_Date : TIME; All_Day : DAY_DURATION; Minutes : FLOAT_ITEM; Int_Minutes : INTEGER; Part_Of_A_Minute : FLOAT_ITEM; begin Time_And_Date := Clock; -- Get the time and date All_Day := Seconds(Time_And_Date); -- Seconds since midnight Minutes := FLOAT_ITEM(All_Day) / 60.0; -- Floating type Minutes Int_Minutes := INTEGER(Minutes - 0.5); -- Integer type minutes Part_Of_A_Minute := FLOAT_ITEM(All_Day) - 60.0 * FLOAT_ITEM(Int_Minutes); X_Initial := 0.1; end Set_Seed; procedure Force_Seed(Start_Seed : FLOAT_ITEM) is Temp : FLOAT_ITEM; Natural_Temp : NATURAL; begin Natural_Temp := NATURAL(Start_Seed - 0.5); Temp := Start_Seed - FLOAT_ITEM(Natural_Temp); X_Initial := Start_Seed; exception when Constraint_Error => Put_Line("Seed out of range, ignored"); end Force_Seed; function Get_Seed return FLOAT_ITEM is begin return X_Initial; end Get_Seed; function Random_Number return FLOAT_ITEM is Temp : FLOAT_ITEM; Natural_Temp : NATURAL; begin Temp := A * X_Initial + C; Natural_Temp := NATURAL(Temp - 0.5); Temp := Temp - FLOAT_ITEM(Natural_Temp); X_Initial := Temp; return Temp; end Random_Number; end Random; |
CndpdGggQWRhLlRleHRfSU8sIENhbGVuZGFyOwp1c2UgQWRhLlRleHRfSU8sIENhbGVuZGFyOwoKcGFja2FnZSBib2R5IFJhbmRvbSBpcwoKWF9pbml0aWFsIDogRkxPQVRfSVRFTSA6PSAwLjA7Ck0gICAgICAgICA6IEZMT0FUX0lURU0gOj0gMS4wOwpBICAgICAgICAgOiBGTE9BVF9JVEVNIDo9IDcuMDsKQyAgICAgICAgIDogRkxPQVRfSVRFTSA6PSAxMy4wIC8gMzEuMDsKCgpwcm9jZWR1cmUgU2V0X1NlZWQgaXMKICAgVGltZV9BbmRfRGF0ZSAgICA6IFRJTUU7CiAgIEFsbF9EYXkgICAgICAgICAgOiBEQVlfRFVSQVRJT047CiAgIE1pbnV0ZXMgICAgICAgICAgOiBGTE9BVF9JVEVNOwogICBJbnRfTWludXRlcyAgICAgIDogSU5URUdFUjsKICAgUGFydF9PZl9BX01pbnV0ZSA6IEZMT0FUX0lURU07CmJlZ2luCiAgIFRpbWVfQW5kX0RhdGUgOj0gQ2xvY2s7ICAgICAgICAgICAgICAgIC0tIEdldCB0aGUgdGltZSBhbmQgZGF0ZQogICBBbGxfRGF5IDo9IFNlY29uZHMoVGltZV9BbmRfRGF0ZSk7ICAgICAtLSBTZWNvbmRzIHNpbmNlIG1pZG5pZ2h0CiAgIE1pbnV0ZXMgOj0gRkxPQVRfSVRFTShBbGxfRGF5KSAvIDYwLjA7ICAgLS0gRmxvYXRpbmcgdHlwZSBNaW51dGVzCiAgIEludF9NaW51dGVzIDo9IElOVEVHRVIoTWludXRlcyAtIDAuNSk7IC0tIEludGVnZXIgdHlwZSBtaW51dGVzCiAgIFBhcnRfT2ZfQV9NaW51dGUgOj0gRkxPQVRfSVRFTShBbGxfRGF5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSA2MC4wICogRkxPQVRfSVRFTShJbnRfTWludXRlcyk7CiAgIFhfSW5pdGlhbCA6PSAwLjE7CmVuZCBTZXRfU2VlZDsKCgpwcm9jZWR1cmUgRm9yY2VfU2VlZChTdGFydF9TZWVkIDogRkxPQVRfSVRFTSkgaXMKVGVtcCA6IEZMT0FUX0lURU07Ck5hdHVyYWxfVGVtcCA6IE5BVFVSQUw7CmJlZ2luCiAgIE5hdHVyYWxfVGVtcCA6PSBOQVRVUkFMKFN0YXJ0X1NlZWQgLSAwLjUpOwogICBUZW1wIDo9IFN0YXJ0X1NlZWQgLSBGTE9BVF9JVEVNKE5hdHVyYWxfVGVtcCk7CiAgIFhfSW5pdGlhbCA6PSBTdGFydF9TZWVkOwpleGNlcHRpb24KICAgd2hlbiBDb25zdHJhaW50X0Vycm9yID0+CiAgICAgIFB1dF9MaW5lKCJTZWVkIG91dCBvZiByYW5nZSwgaWdub3JlZCIpOwplbmQgRm9yY2VfU2VlZDsKCgpmdW5jdGlvbiBHZXRfU2VlZCByZXR1cm4gRkxPQVRfSVRFTSBpcwpiZWdpbgogICByZXR1cm4gWF9Jbml0aWFsOwplbmQgR2V0X1NlZWQ7CgoKZnVuY3Rpb24gUmFuZG9tX051bWJlciByZXR1cm4gRkxPQVRfSVRFTSBpcwogICBUZW1wICAgICAgICAgOiBGTE9BVF9JVEVNOwogICBOYXR1cmFsX1RlbXAgOiBOQVRVUkFMOwpiZWdpbgogICBUZW1wIDo9IEEgKiBYX0luaXRpYWwgKyBDOwogICBOYXR1cmFsX1RlbXAgOj0gTkFUVVJBTChUZW1wIC0gMC41KTsKICAgVGVtcCA6PSBUZW1wIC0gRkxPQVRfSVRFTShOYXR1cmFsX1RlbXApOwogICBYX0luaXRpYWwgOj0gVGVtcDsKICAgcmV0dXJuIFRlbXA7CmVuZCBSYW5kb21fTnVtYmVyOwoKZW5kIFJhbmRvbTsK
gnatgcc -c -pipe -O2 prog.adb prog.adb:5:14: warning: file name does not match unit name, should be "random.adb" prog.adb:5:14: file "random.ads" not found gnatmake: "prog.adb" compilation error
-
result: Compilation error (maybe you wish to see an example for Ada)



