X is random(10).
0 から 10 までの乱数を取得できることはわかっていますが、ランダムに一致するアイテムを取得する同様のコマンドはありますか?
14160 次
2 に答える
6
SWI-Prolog v6 では、random_member/2
次のように定義されています。
?- listing(random_member).
random:random_member(D, A) :-
length(A, B),
C is random(B),
nth0(C, A, D).
使用例:
?- random_member(a(N), [a(1), a(2), b(3)]).
N = 1.
?- random_member(a(N), [a(1), a(2), b(3)]).
N = 1.
?- random_member(a(N), [a(1), a(2), b(3)]).
N = 2.
?- random_member(a(N), [a(1), a(2), b(3)]).
false.
?- random_member(a(N), [a(1), a(2), b(3)]).
false.
?- random_member(a(N), [a(1), a(2), b(3)]).
N = 2.
(-,+)
ただし、モードで使用することをお勧めします。
于 2012-02-08T12:48:24.357 に答える
6
実装できます。ここにバージョンがあります:
%% choose(List, Elt) - chooses a random element
%% in List and unifies it with Elt.
choose([], []).
choose(List, Elt) :-
length(List, Length),
random(0, Length, Index),
nth0(Index, List, Elt).
http://ozone.wordpress.com/2006/02/22/little-prolog-challenge/より
于 2010-02-15T12:54:07.727 に答える