2012-06-14 8 views
25

Scalaリストのシンプルなシャッフル機能はありますか?Scala ListBuffer(または同等のもの)シャッフル

もしそうでなければ、実装する最も簡単な方法は何ですか?

は、私はこれらのものの多くは、すべてのコード上で行う必要があり、そう単純な呼び出しは、最高のは、それが

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

おかげ

:)事前にRubyでの例ですScalaで
+0

あなたは[Collections.shuffle()] [1]を使って見ましたか? [1]:http://stackoverflow.com/questions/1259223/how-to-use-java-collections-shuffle-on-a-scala-array?rq=1 –

+0

まあ、javaを使用していません。 .only scalaネイティブ関数:) – rdlu

+1

@BrianAgnew、Scalaコレクションでは動作しません。 – 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を使用します –

関連する問題