|
@@ -1,33 +1,28 @@
|
|
|
-{ Random Number Generator }
|
|
|
-
|
|
|
program random;
|
|
|
-uses SysUtils;
|
|
|
|
|
|
-const
|
|
|
- IM = 139968;
|
|
|
- IA = 3877;
|
|
|
- IC = 29573;
|
|
|
+{$mode objfpc}
|
|
|
+
|
|
|
+uses SysUtils;
|
|
|
|
|
|
-var
|
|
|
- LAST, NUM, i : longint;
|
|
|
- result : real;
|
|
|
+const IM = 139968;
|
|
|
+ IA = 3877;
|
|
|
+ IC = 29573;
|
|
|
|
|
|
-function gen_random(n : integer) : real;
|
|
|
+var LAST, NUM, i: longint;
|
|
|
+ value: double;
|
|
|
+
|
|
|
+function gen_random(const n: integer): double; inline;
|
|
|
begin
|
|
|
- LAST := (LAST * IA + IC) mod IM;
|
|
|
- gen_random := n * LAST / IM;
|
|
|
+ LAST := (LAST * IA + IC) mod IM;
|
|
|
+ gen_random := n * LAST / IM;
|
|
|
end;
|
|
|
|
|
|
begin
|
|
|
- if ParamCount = 0 then
|
|
|
- NUM := 1
|
|
|
- else
|
|
|
- NUM := StrToInt(ParamStr(1));
|
|
|
- if NUM < 1 then NUM := 1;
|
|
|
- LAST := 42;
|
|
|
- for i:= 1 to NUM do
|
|
|
- begin
|
|
|
- result := gen_random(100);
|
|
|
- end;
|
|
|
- WriteLn( result:10:9 );
|
|
|
+ if ParamCount = 0 then NUM := 1
|
|
|
+ else NUM := StrToInt(ParamStr(1));
|
|
|
+ if NUM < 1 then NUM := 1;
|
|
|
+ LAST := 42;
|
|
|
+ for i:= 1 to NUM do
|
|
|
+ value:=gen_random(100);
|
|
|
+ WriteLn(value:10:9);
|
|
|
end.
|