home *** CD-ROM | disk | FTP | other *** search
- % Einfacher Zufallszahlengenerator für Prolog-68
- %
- % Copyright © 1990,91,92 Jens Kilian.
- %
- %
- % randomize/0 Initialisierung
- % randomize/1 Initialisierung mit fester Zahl (0 ... 65536)
- % random(Min, Max, R) R ist Zufallszahl aus [Min, Max].
-
- randomize :-
- statistics(runtime, [Time, _]),
- Seed is (Time and 65535) + 1,
- randomize(Seed).
-
-
- randomize(Seed) :- integer(Seed), Seed > 0, Seed < 65537, !,
- erase_all(seed),
- recorda(seed, Seed, _).
- randomize(Gulp) :-
- display(Gulp), display(' is not a legal seed.'), put(13), put(10),
- randomize.
-
-
- random(Min, Max, Random) :-
- recorded(seed, Seed, Ref),
- erase(Ref),
- NewSeed is (75 * Seed) mod 65537,
- recorda(seed, NewSeed, _),
- Random is Min + ((NewSeed - 1) * (Max - Min + 1)) / 65536.
-
-
- erase_all(Key) :-
- recorded(Key, _, Ref),
- erase(Ref),
- fail.
-
- erase_all(_).
-