I have the following Prolog code which samples n items from a list without replacement:
samp(0,_,Sample,Sample). samp(N,Domain0, Sample0, Sample):- N >= 0, length(Domain0,L), RandomNumber is random(L), nth0(RandomNumber, Domain0, X), delete(Domain0,X,Domain1), append(Sample0,[X],Sample1), N1 is N-1, samp(N1,Domain1,Sample1,Sample). sample(Domain,N,Sample):- samp(N,Domain,,Sample).
Is there a 'nicer' way to do this?