2012-06-14 10 views
25

क्या स्कैला सूचियों के लिए एक साधारण शफल फ़ंक्शन है?स्कैला ListBuffer (या समतुल्य) shuffle

यदि नहीं, तो कार्यान्वित करने का सबसे आसान तरीका क्या है?

मैं इन बातों का एक बहुत सभी कोड पर क्या करना है, तो सरल कॉल, सबसे अच्छा यह

पहले से

a = [ 1, 2, 3 ]   #=> [1, 2, 3] 
a.shuffle     #=> [2, 3, 1] returns new array shuffled 

धन्यवाद :)

रूबी में एक उदाहरण है
+0

क्या आपने [Collections.shuffle()] [1] का उपयोग करने पर देखा है? [1]: http://stackoverflow.com/questions/1259223/how-to-use-java-collections-shuffle-on-a-scala-array?rq=1 –

+0

हम्म, जावा का उपयोग नहीं कर रहा .. .only scala देशी कार्यों :) – rdlu

+1

@BrianAgnew, जो स्कैला संग्रह के साथ काम नहीं करेगा। – missingfaktor

उत्तर

34

स्काला में आप scala.util.Random उपयोग कर सकते हैं:

util.Random.shuffle((1 to 10).toSeq) 
//Vector(9, 6, 8, 7, 10, 1, 2, 5, 3, 4) 

util.Random.shuffle(List('A', 'B', 'C', 'D', 'E', 'F')) 
//List(B, D, A, E, C, F) 

आपका परिणाम भिन्न हो सकते। ..

+0

बहुत अच्छा और साफ है, लेकिन किसी कारण से यह ऐरे [ऑब्जेक्ट्स] के साथ काम नहीं करता है, केवल लिस्ट और लिस्टबफर के साथ (2.8 का उपयोग करके) – rdlu

+0

@ rodrigo.dk संग्रह कुछ ऐसा होना चाहिए जो ट्रैवर्सएबलऑनट विशेषता को लागू करता हो। उदाहरण के लिए ऐरेबफर का प्रयास करें। – Brian

+1

@ rodrigo.dk java.util.Collections.shuffle arrays के लिए उपयोग करें –