22 lines
481 B
Text
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 };
|