RndSkipper.java
/*
* License : The MIT License
* Copyright(c) 2021 Olyutorskii
*/
package io.github.olyutorskii.aletojio.idling;
import io.github.olyutorskii.aletojio.rng.RndInt32;
import java.util.Objects;
/**
* Random numbers are consumed until statistical characteristics are met.
*
* <p>It is convenient to wait until the seed values are confused.
*/
public class RndSkipper {
private final RndMonitor monitor;
/**
* Constructor.
*
* @param monitorArg monitor
* @throws NullPointerException argument is null
*/
public RndSkipper(RndMonitor monitorArg) {
super();
Objects.requireNonNull(monitorArg);
this.monitor = monitorArg;
return;
}
/**
* Consume numbers.
*
* @param rnd random generator
* @return consumed numbers
* @throws NullPointerException argument is null
*/
public long skip(RndInt32 rnd) {
Objects.requireNonNull(rnd);
long counter = 0L;
this.monitor.reset();
boolean passed;
do {
int iVal = rnd.nextInt32();
counter++;
passed = this.monitor.probe(iVal);
} while (!passed);
return counter;
}
}