Scala のリストから n 個の要素のサブセットをランダムにサンプリングする必要があります。n 個の要素のそれぞれが一意であることを手動でチェックすることなく、これを行う便利な方法があるかどうか疑問に思っていました。現時点では、次のようなものがあります。
import util.Random
def sample(itms:List[A], sampleSize:Int) {
var numbersSeen = Set[Int]()
var sampled = List[A]()
val itmLen = itms.size()
var sampleIdex = Random.nextInt(itmLen)
while(sampled < sampleSize) {
if(numbersSeen.contains(sampleIdex)){
sampleIdex = Random.nextInt(itmLen)
} else {
numbersSeen.add(sampleIdex)
sampled.add(itms(sampleIdex))
}
}
sampled
}
範囲内の整数の非反復ランダムリストを生成するか、リストから n 要素をランダムにサンプリングするために実行できる、よりエレガントな何かがあることを望んでいました。