in concurrency-loadbalancer-core/src/main/java/com/uber/concurrency/loadbalancer/utils/ReservoirSampler.java [74:88]
public void sample(T t) {
if (sampledTimes == Integer.MAX_VALUE) {
return;
}
if (result.size() < nSample) {
result.add(t);
} else {
int index = rand.nextInt(1 + sampledTimes);
if (index < nSample) {
result.set(index, t);
}
}
sampledTimes++;
}