RosettaCodeData/Task/Subtractive-generator/Sidef/subtractive-generator.sidef
2016-12-05 23:44:36 +01:00

22 lines
481 B
Text

class SubRandom(seed, state=[]) {
const mod = 1_000_000_000;
method init {
var s = [seed % mod, 1];
53.times {
s.append((s[-2] - s[-1]) % mod);
}
state = s.range.map {|i| s[(34 + 34*i) % 55] };
range(55, 219).each { self.subrand };
}
method subrand {
var x = ((state.shift - state[-24]) % mod);
state.append(x);
return x;
}
}
var r = SubRandom(292929);
10.times { say r.subrand };