27 lines
615 B
Plaintext
27 lines
615 B
Plaintext
procedure main()
|
|
every 1 to 10 do
|
|
write(rand_sub(292929))
|
|
end
|
|
|
|
procedure rand_sub(x)
|
|
static ring,m
|
|
if /ring then {
|
|
m := 10^9
|
|
every (seed | ring) := list(55)
|
|
seed[1] := \x | ?(m-1)
|
|
seed[2] := 1
|
|
every seed[n := 3 to 55] := (seed[n-2]-seed[n-1])%m
|
|
every ring[(n := 0 to 54) + 1] := seed[1 + (34 * (n + 1)%55)]
|
|
every n := *ring to 219 do {
|
|
ring[1] -:= ring[-24]
|
|
ring[1] %= m
|
|
put(ring,get(ring))
|
|
}
|
|
}
|
|
ring[1] -:= ring[-24]
|
|
ring[1] %:= m
|
|
if ring[1] < 0 then ring[1] +:= m
|
|
put(ring,get(ring))
|
|
return ring[-1]
|
|
end
|