1implement Rand; 2 3include "rand.m"; 4 5rsalt: big; 6 7init(seed: int) 8{ 9 rsalt = big seed; 10} 11 12MASK: con (big 1<<63)-(big 1); 13 14rand(modulus: int): int 15{ 16 rsalt = rsalt * big 1103515245 + big 12345; 17 if(modulus <= 0) 18 return 0; 19 return int (((rsalt&MASK)>>10) % big modulus); 20} 21 22# 0 < modulus < 2^53 23bigrand(modulus: big): big 24{ 25 rsalt = rsalt * big 1103515245 + big 12345; 26 if(modulus <= big 0) 27 return big 0; 28 return ((rsalt&MASK)>>10) % modulus; 29} 30