如何从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)