seed(3571). /* set seed value to a large prime number */ random(R, N) :- seed(S), N is (S mod R), /* use seed to generate random number in range */ retract(seed(S)), /* delete seed fact */ NewSeed is (125 * S + 1) mod 4096, /* compute new seed */ asserta(seed(NewSeed)), /* add new seed fact */ !. /* do not backtrack */