|
@@ -12,6 +12,8 @@ CONST
|
|
allbits = 7FFFFFFFH;
|
|
allbits = 7FFFFFFFH;
|
|
halfrange = 20000000H;
|
|
halfrange = 20000000H;
|
|
step = 7;
|
|
step = 7;
|
|
|
|
+
|
|
|
|
+ allbitsInv = 1 / REAL(allbits);
|
|
|
|
|
|
TYPE
|
|
TYPE
|
|
(** A pseudo-random number generator. This object is not reentrant. *)
|
|
(** A pseudo-random number generator. This object is not reentrant. *)
|
|
@@ -86,7 +88,7 @@ TYPE
|
|
|
|
|
|
PROCEDURE Uniform*(): REAL;
|
|
PROCEDURE Uniform*(): REAL;
|
|
BEGIN
|
|
BEGIN
|
|
- RETURN Integer() / allbits;
|
|
|
|
|
|
+ RETURN Integer() * allbitsInv;
|
|
END Uniform;
|
|
END Uniform;
|
|
|
|
|
|
(** Return a pseudo-random real number, exponentially distributed. *)
|
|
(** Return a pseudo-random real number, exponentially distributed. *)
|