Query/set the state of the random generator. This is intended
for restarting the generator at a known state only. The
predicate setrand/1 accepts an opaque term returned by
getrand/1. This term may be asserted, written and read. The
application may not make other assumptions about this term.
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.
- Errors
- -
existence_error(random_state, _)
is raised if the
underlying infrastructure cannot fetch the random state.
This is currently the case if SWI-Prolog is not compiled
with the GMP library.
- See also
- - set_random/1 and random_property/1 provide the SWI-Prolog
native implementation.
S is a sorted list of K unique random integers in the range
1..N. Implemented by enumerating 1..N and deciding whether or
not the number should be part of the set. For example:
?- randset(5, 5, S).
S = [1, 2, 3, 4, 5]. (always)
?- randset(5, 20, S).
S = [2, 7, 10, 19, 20].
- See also
- - randseq/3.
- bug
- - Slow if N is large and K is small.
S is a list of K unique random integers in the range 1..N. The
order is random. Works as if defined by the following code.
randseq(K, N, List) :-
randset(K, N, Set),
random_permutation(Set, List).
- See also
- - randset/3.
Query/set the state of the random generator. This is intended
for restarting the generator at a known state only. The
predicate setrand/1 accepts an opaque term returned by
getrand/1. This term may be asserted, written and read. The
application may not make other assumptions about this term.
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.
- Errors
- -
existence_error(random_state, _)
is raised if the
underlying infrastructure cannot fetch the random state.
This is currently the case if SWI-Prolog is not compiled
with the GMP library.
- See also
- - set_random/1 and random_property/1 provide the SWI-Prolog
native implementation.