From 37da2899f40661e3e9631e497da8dc59b971cbd0 Mon Sep 17 00:00:00 2001 From: "Charles.Forsyth" Date: Fri, 22 Dec 2006 17:07:39 +0000 Subject: 20060303a --- appl/lib/rand.b | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 appl/lib/rand.b (limited to 'appl/lib/rand.b') diff --git a/appl/lib/rand.b b/appl/lib/rand.b new file mode 100644 index 00000000..3409cdec --- /dev/null +++ b/appl/lib/rand.b @@ -0,0 +1,29 @@ +implement Rand; + +include "rand.m"; + +rsalt: big; + +init(seed: int) +{ + rsalt = big seed; +} + +MASK: con (big 1<<63)-(big 1); + +rand(modulus: int): int +{ + rsalt = rsalt * big 1103515245 + big 12345; + if(modulus <= 0) + return 0; + return int (((rsalt&MASK)>>10) % big modulus); +} + +# 0 < modulus < 2^53 +bigrand(modulus: big): big +{ + rsalt = rsalt * big 1103515245 + big 12345; + if(modulus <= big 0) + return big 0; + return ((rsalt&MASK)>>10) % modulus; +} -- cgit v1.2.3