in cassovary-core/src/main/scala/com/twitter/cassovary/util/Sampling.scala [49:65]
def randomSubset(elements: Int, range: Range, rng: Random): Array[Int] = {
if (elements >= range.size) {
range.toArray
} else {
if (elements > range.size / 2) {
val complement = new IntOpenHashSet(randomSubset(range.size - elements, range, rng).toIterator)
range.filterNot(complement.contains).toArray
} else {
val result = new IntOpenHashSet()
while (result.size < elements) {
val randomElement = range(rng.nextInt(range.size))
result.add(randomElement)
}
result.toIntArray
}
}
}