|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 3072 (0xc00)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Random, seg_05830e
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦this⟧
--::::::::::
--random.adb
--::::::::::
with Calendar;
use Calendar;
package body Random is
-- Body of random number generator package.
-- Adapted from the Ada literature by
-- Michael B. Feldman, The George Washington University, November 1990.
Modulus : constant := 9317;
type Int_16 is range -2 ** 15 .. 2 ** 15 - 1;
type Int_32 is range -2 ** 31 .. 2 ** 31 - 1;
subtype Seed_Range is Int_16 range 0 .. (Modulus - 1);
Seed, Default_Seed : Seed_Range;
procedure Set_Seed (N : Positive) is
begin
Seed := Seed_Range (N);
end Set_Seed;
function Unit_Random return Float is
Multiplier : constant := 421;
Increment : constant := 2073;
Result : Float;
begin
Seed := (Multiplier * Seed + Increment) mod Modulus;
Result := Float (Seed) / Float (Modulus);
return Result;
exception
when Constraint_Error | Numeric_Error =>
Seed := Int_16
((Multiplier * Int_32 (Seed) + Increment) mod Modulus);
Result := Float (Seed) / Float (Modulus);
return Result;
end Unit_Random;
function Random_Int (N : Positive) return Positive is
Result : Integer range 1 .. N;
begin
Result := Integer (Float (N) * Unit_Random + 0.5);
return Result;
exception
when Constraint_Error | Numeric_Error =>
return 1;
end Random_Int;
end Random;
nblk1=2
nid=0
hdr6=4
[0x00] rec0=25 rec1=00 rec2=01 rec3=01e
[0x01] rec0=13 rec1=00 rec2=02 rec3=001
tail 0x217658e5a87e288ce0a4c 0x42a00088462060003