2012-06-14 6 views
25

스칼라 목록에 대한 간단한 셔플 기능이 있습니까?스칼라 ListBuffer (또는 이에 상응하는) 셔플

그렇지 않다면 구현하는 가장 간단한 방법은 무엇입니까?

나는 이러한 것들을 많이 모든 코드를 통해 수행해야하기 때문에 간단한 호출은, 최고의 그것은

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

아주 훌륭하고 깨끗하지만 어떤 이유로 Array [Objects], Lists 및 ListBuffers (2.8 사용)에서만 작동했습니다. – rdlu

+0

@ rodrigo.dk 컬렉션은 TraversableOnce 특성을 구현하는 무언가 여야합니다. 예를 들어 ArrayBuffer를 사용해보십시오. – Brian

+1

@ rodrigo.dk는 배열을 위해 java.util.Collections.shuffle을 사용합니다. –

관련 문제