Apache Commons RNG: Random Numbers Generators
Commons RNG provides implementations of pseudo-random numbers generators that are
faster; of higher quality; and/or of a longer period than
The "sampling" module contains classes to generate samples that follow the statistics of a given distribution. Example: import org.apache.commons.rng.UniformRandomProvider; import org.apache.commons.rng.sampling.distribution.ContinuousSampler; import org.apache.commons.rng.sampling.distribution.ZigguratSampler.Gaussian; public class NormalDeviates { private final ContinuousSampler normalizedGaussian; public NormalDeviates(UniformRandomProvider rng) { normalizedGaussian = ZigguratSampler.Gaussian.of(rng); } public double sample(double mean, double sigma) { return mean + sigma * normalizedGaussian.sample(); } } Utilities are provided to sample from generic collections. Example: import org.apache.commons.rng.UniformRandomProvider; import java.util.HashSet; import org.apache.commons.rng.sampling.CollectionSampler; HashSet<String> elements = new HashSet<>(); elements.add("Apache"); elements.add("Commons"); elements.add("RNG"); CollectionSampler<String> sampler = new CollectionSampler<>(RandomSource.MWC_256.create(), elements); String word = sampler.sample(); The module also contains classes to generate coordinate samples from geometric shapes such as inside a ball, box or triangle or on the surface of a sphere. Example: import org.apache.commons.rng.UniformRandomProvider; import org.apache.commons.rng.sampling.UnitSphereSampler; int dimension = 3; UnitSphereSampler sampler = UnitSphereSampler.of(dimension, RandomSource.KISS.create()); double[] vector = sampler.sample(); Browse the Javadoc for more information. |