RosettaCodeData/Task/Linear-congruential-generator/Zkl/linear-congruential-generator-1.zkl
2017-09-25 22:28:19 +02:00

14 lines
332 B
Text

var [private] seed = 0;
fcn srand(s){ seed = s }
const TWO31=(1).shiftLeft(31);
//#define BSD_RAND 1
#ifdef BSD_RAND
const A=1103515245, C=12345;
fcn rand{ seed = (seed * A + C) % TWO31 }
#else // MS rand
const A=214013, C=2531011, TWO16=(1).shiftLeft(16);
fcn rand{ (seed = (seed * A + C) % TWO31) / TWO16 }
#endif