如何从Scala中的数组中select一个随机元素?

例如,有一个Scala数组, val A = Array("please", "help", "me") 。 如何从这个数组中select一个随机元素?

 import java.util.Random // ... val rand = new Random(System.currentTimeMillis()) val random_index = rand.nextInt(A.length) val result = A(random_index) 
 import scala.util.Random val A = Array("please", "help", "me") Random.shuffle(A.toList).head 
 import scala.util.Random val A = List(1, 2, 3, 4, 5, 6) A(Random.nextInt(A.size)) 

一个更好的答案,不涉及改组arrays是这样的:

 import scala.util.Random object sample { //gets random element from array def arr[T](items:Array[T]):T = { items(Random.nextInt(items.length)) } } 

这也一般工作

我们还可以通过Option monad添加一些安全性(使用lift函数和一个条件)

实际上,如果你在数组上使用这个函数(可能是空的),你的结果将永远是一个选项。

参考透明度FTW \ o /

 def getRandElemO[T](arr: Array[T]): Option[T] = if (arr.isEmpty) None else arr lift util.Random.nextInt(arr.length)