diff options
Diffstat (limited to 'appl/lib/rand.b')
| -rw-r--r-- | appl/lib/rand.b | 29 |
1 files changed, 29 insertions, 0 deletions
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; +} |
