2010-02-14 12 views
5

में यादृच्छिक आइटम मुझे पता है कि 0 से 10 तक यादृच्छिक संख्या प्राप्त करने के लिए मैं X is random(10). कर सकता हूं, लेकिन क्या यादृच्छिक मिलान आइटम प्राप्त करने के लिए एक समान कमांड है?प्रोलॉग

उत्तर

3

आप इसे कार्यान्वित कर सकते हैं।

%% 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/ से

+1

वाह वहां, चयन/2 का पहला खंड आप जो चाहते हैं वह नहीं है। यदि सूची खाली है तो आपको खाली सूची के साथ एल्ट को एकीकृत करने के बजाय कोई समाधान नहीं करना चाहिए। "चुनें ([], _): -!, असफल।" इसे ठीक कर देगा। इसके अलावा, यह असीमित संख्या में समाधान उत्पन्न करता है जो आमतौर पर अवांछनीय है। – rndmcnlly

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. 

आप शायद का उपयोग करना चाहते यहाँ एक संस्करण है हालांकि यह (-,+) मोड में है।

संबंधित मुद्दे