[ 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