2012-06-14 30 views
25

Có chức năng trộn ngẫu nhiên đơn giản nào cho danh sách Scala không?Scala ListBuffer (hoặc tương đương) shuffle

Nếu không, cách đơn giản nhất để triển khai là gì?

Tôi có rất nhiều những điều cần làm trên tất cả các mã, do đó đơn giản hơn các cuộc gọi, là tốt nhất đó là

Một ví dụ trong Ruby

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

Cảm ơn trước :)

+0

Bạn đã xem sử dụng [Collections.shuffle()] [1] chưa? [1]: http://stackoverflow.com/questions/1259223/how-to-use-java-collections-shuffle-on-a-scala-array?rq=1 –

+0

Hmm, không sử dụng java .. .only scala native functions :) – rdlu

+1

@BrianAgnew, sẽ không hoạt động với bộ sưu tập Scala. – missingfaktor

Trả lời

34

Trong Scala bạn có thể sử dụng 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) 

Kết quả của bạn có thể thay đổi. ..

+0

Rất đẹp và sạch sẽ, nhưng vì một số lý do nó không làm việc với Array [Objects], chỉ với Lists và ListBuffers (sử dụng 2.8) – rdlu

+0

@ rodrigo.dk Bộ sưu tập phải là một cái gì đó thực hiện TraversableOnce. Hãy thử ArrayBuffer chẳng hạn. – Brian

+1

@ rodrigo.dk sử dụng java.util.Collections.shuffle cho mảng –

Các vấn đề liên quan