logo search
TurboProlog / Документация / TOM_1

Предикат random/2

Эта версия random имеет два аргумента, формат:

random(MaxValue, RandomInt) /* (i,o) */

Этот предикат ставит в соответствие RandomInt случайное целое, удов-

летворяющее условию:

0 <= RandomInt < MaxValue

Предикат random/2 работает значительно быстрее чем random/1, так как

random/2 использует только целочисленную арифметику.

Пример

------

Программа CH11EX01.PRO использует random/1 для выбора трех имен из

пяти случайным образом.

predicates

person(integer,symbol)

rand_int_1_5(integer)

rand_person(integer)

goal

rand_person(3).

clauses

person(1,fred).

person(2,tom).

person(3,mary).

person(4,dick).

person(5,george).

rand_int_1_5(X):-

random(Y),X=Y*5 + 0.5.

rand_person(0) :-!.

rand_person(Count) :-

rand_int_1_5(N), person(N,Name), write(Name), nl,

NewCount = Count-1, rand_person(NewCount).