12 lines
413 B
Text
12 lines
413 B
Text
fcn rand_sub(x){
|
|
var ring=L(),m=(1e9).toInt();
|
|
mod:='wrap(n){ if(n<0) n+m else n };
|
|
if(not ring){
|
|
seed:=L( (if(vm.numArgs) x else m-1), 1);
|
|
foreach n in ([2 .. 54]){ seed.append((seed[n-2]-seed[n-1]):mod(_)) }
|
|
foreach n in (55){ ring.append(seed[(34*(n+1))%55]) }
|
|
do(220-ring.len()){ self.fcn() } // 165
|
|
}
|
|
ring.append((ring.pop(0)-ring[-24]):mod(_));
|
|
return(ring[-1]);
|
|
}
|