ref: d09cf07a82cf4ffb846a31d0384e774b4c4661e1
dir: /appl/lib/rand.b/
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; }