我需要从 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 个元素。