[ Arithmetic | Reference Manual | Alphabetic Index ]
seed(+Seed)
Seed the pseudo-random number generator
- Seed
- Integer.
Description
Used to initialise the seed value used for generating sequences
of pseudo-random numbers in random/1, random/2 and frandom/1.
Every seed leads to a particular pseudo-random sequence. Random
generation is repeatable by setting the seed to identical values.
The seed value should be an integer in the range 1 .. 2^31-1.
The scope of the seed setting depends on the setting of the
'random_mode' flag (see set_flag/2, get_flag/2):
- lcg (default)
-
The seed is local to the calling engine.
- xs
-
The seed is local to the calling engine.
- system
-
The seed has process-wide effect.
The initial seed on startup depends on the environment and should
be considered random. When a new engine is created from a parent
engine, it inherits its seed from the parent. When an engine is
cloned from an original, it inherits its seed from the original.
Modes and Determinism
Exceptions
- (4) instantiation fault
- Seed is not instantiated.
- (5) type error
- Seed is instantiated, but not to an integer.
Examples
?- (for(_,1,9), foreach(R,Rs) do random(100,R)).
Rs = [93, 56, 11, 88, 98, 34, 22, 18, 30]
Yes (0.00s cpu)
?- seed(123), (for(_,1,9), foreach(R,Rs) do random(100,R)).
Rs = [33, 92, 47, 28, 50, 28, 42, 59, 89]
Yes (0.00s cpu)
?- seed(123), (for(_,1,9), foreach(R,Rs) do random(100,R)).
Rs = [33, 92, 47, 28, 50, 28, 42, 59, 89]
Yes (0.00s cpu)
See Also
random / 1, random / 2, frandom / 1