/* Random number generator */ random_pick(List,El):- /* to pick random element from a list*/ length(List,L), random(L,N), nth(N,List,El). random(Range,Num):- /* to choose random number in range */ seed(Seed), /* get seed from database */ Num is (Seed mod Range) + 1, /* fit seed into range */ retract(seed(Seed)), /* delete old value of seed */ NewSeed is (125*Seed+1) mod 4093, /* calculate new value*/ assert(seed(NewSeed)). /* and assert it into database */ seed(13). /* random number seed database entry */ /* to get the nth element of list */ nth(1,[Hd|T],Hd):- !. /* if n is i then return first element*/ nth(N,[Hd|T],El):- /* otherwise*/ N1 is N-1, /* decrement n by 1 */ nth(N1,T,El). /* and recurse down list */ /* to find the length of a list */ length(List,L):-lengthl(0,List,L). lengthl(Ans,[],Ans). lengthl(L1,[H|T],L2):- L is L1+1, lengthl(L,T,L2).