This library is derived from the DEC10 library random. Later, the core random generator was moved to C. The current version uses the SWI-Prolog arithmetic functions to realise this library. These functions are based on the GMP library.
For compatibility reasons with older versions of this library,
setrand/1 also accepts
a term rand(A,B,C)
, where A, B and C are integers in the
range 1..30,000. This argument is used to seed the random generator.
Deprecated.
|
List|
), followed by nth1/3.
Fails of List is the empty list.
random_subseq/3 may also be called with Subseq and Complement bound and List unbound, which will recreate List by randomly interleaving Subseq and Complement. This mode may fail randomly, matching SICStus behavior. The failure probability corresponds to the probability of the "forward" mode selecting a Subseq/Complement combination with different lengths.
|
S|
is K.
For a large K/N it enumerates 1..N and
decides randomly to include the number or not. For example:
?- randset(5, 5, S). S = [1, 2, 3, 4, 5]. (always) ?- randset(5, 20, S). S = [2, 7, 10, 19, 20].
randseq(K, N, List) :- randset(K, N, Set), random_permutation(Set, List).