import java.security.SecureRandom;
import java.util.BitSet;
import java.util.Random;
import java.util.concurrent.atomic.AtomicInteger;
public class RequestSampler {
private final AtomicInteger counter = new AtomicInteger(0);
private final BitSet sampleDecisions;
private float percentage =0.1f;
private static float percentCount = 10000.0f;
public RequestSampler(float percentage) {
RequestSampler.setPercentCount(1/percentage);
int outOf100 = (int) (percentage * percentCount);
this.sampleDecisions = randomBitSet((int)percentCount, outOf100, new SecureRandom());
this.percentage = percentage;
}
public boolean isSampled() {
if (this.percentage == 0) {
return false;
} else if (this.percentage == percentCount) {
return true;