Je sais que je peux faire X is random(10). pour obtenir un nombre aléatoire de 0 à 10, mais est-il une commande similaire pour obtenir un random article correspondant?
Vous pouvez la mettre en œuvre. Voici une version:
%% 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).
Oh là là, la première clause de choisir/2 n'est pas ce que vous voulez. Si la liste est vide, vous devez produire aucune des solutions au lieu de l'unifier Elt avec la liste vide. "choisir([],_) :- !, un échec." serait-il fixer. Aussi, cela génère un nombre infini de solutions qui est généralement indésirable.
Vous pouvez la mettre en œuvre. Voici une version:
De http://ozone.wordpress.com/2006/02/22/little-prolog-challenge/
OriginalL'auteur Juanjo Conti
SWI-Prolog v6 a
random_member/2
définie comme ceci:Exemple d'utilisation:
Vous voulez probablement pour l'utiliser dans la
(-,+)
mode.OriginalL'auteur Kaarel