Repository: commons-rng Updated Branches: refs/heads/master 313923203 -> 775b3d553
Javadoc. Project: http://git-wip-us.apache.org/repos/asf/commons-rng/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-rng/commit/2e0d86c5 Tree: http://git-wip-us.apache.org/repos/asf/commons-rng/tree/2e0d86c5 Diff: http://git-wip-us.apache.org/repos/asf/commons-rng/diff/2e0d86c5 Branch: refs/heads/master Commit: 2e0d86c5515139ea3967de76798f47226ca0f206 Parents: 6828b73 Author: Gilles <er...@apache.org> Authored: Fri Nov 11 21:59:16 2016 +0100 Committer: Gilles <er...@apache.org> Committed: Fri Nov 11 21:59:16 2016 +0100 ---------------------------------------------------------------------- .../InverseMethodContinuousSampler.java | 31 ++++++++++++++++++++ .../InverseMethodDiscreteSampler.java | 31 ++++++++++++++++++++ .../rng/sampling/distribution/package-info.java | 16 +++++++++- 3 files changed, 77 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-rng/blob/2e0d86c5/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/InverseMethodContinuousSampler.java ---------------------------------------------------------------------- diff --git a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/InverseMethodContinuousSampler.java b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/InverseMethodContinuousSampler.java index 8f71089..b903bbc 100644 --- a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/InverseMethodContinuousSampler.java +++ b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/InverseMethodContinuousSampler.java @@ -23,6 +23,37 @@ import org.apache.commons.rng.sampling.AbstractContinuousSampler; * Distribution sampler that uses the * <a href="https://en.wikipedia.org/wiki/Inverse_transform_sampling"> * inversion method</a>. + * + * <p> + * It can be used to sample any distribution that provides access to its + * <em>inverse cumulative probabilty function</em>. + * </p> + * + * <p>Example:</p> + * <pre><source> + * import org.apache.commons.math3.distribution.RealDistribution; + * import org.apache.commons.math3.distribution.ChiSquaredDistribution; + * + * import org.apache.commons.rng.simple.RandomSource; + * import org.apache.commons.rng.sampling.ContinuousSampler; + * import org.apache.commons.rng.sampling.distribution.InverseMethodContinuousSampler; + * import org.apache.commons.rng.sampling.distribution.ContinuousInverseCumulativeProbabilityFunction; + * + * // Distribution to sample. + * final RealDistribution dist = new ChiSquaredDistribution(9); + * // Create the sampler. + * final ContinuousSampler chiSquareSampler = + * new InverseMethodContinuousSampler(RandomSource.create(RandomSource.MT), + * new ContinuousInverseCumulativeProbabilityFunction() { + * @Override + * public double inverseCumulativeProbability(double p) { + * return dist.inverseCumulativeProbability(p); + * } + * }); + * + * // Generate random deviate. + * double random = chiSquareSampler.sample(); + * </source></pre> */ public class InverseMethodContinuousSampler extends AbstractContinuousSampler { /** Inverse cumulative probability function. */ http://git-wip-us.apache.org/repos/asf/commons-rng/blob/2e0d86c5/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/InverseMethodDiscreteSampler.java ---------------------------------------------------------------------- diff --git a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/InverseMethodDiscreteSampler.java b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/InverseMethodDiscreteSampler.java index f80e0a3..5a5c736 100644 --- a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/InverseMethodDiscreteSampler.java +++ b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/InverseMethodDiscreteSampler.java @@ -23,6 +23,37 @@ import org.apache.commons.rng.sampling.AbstractDiscreteSampler; * Distribution sampler that uses the * <a href="https://en.wikipedia.org/wiki/Inverse_transform_sampling"> * inversion method</a>. + * + * <p> + * It can be used to sample any distribution that provides access to its + * <em>inverse cumulative probabilty function</em>. + * </p> + * + * <p>Example:</p> + * <pre><source> + * import org.apache.commons.math3.distribution.IntegerDistribution; + * import org.apache.commons.math3.distribution.BinomialDistribution; + * + * import org.apache.commons.rng.simple.RandomSource; + * import org.apache.commons.rng.sampling.DiscreteSampler; + * import org.apache.commons.rng.sampling.distribution.InverseMethodDiscreteSampler; + * import org.apache.commons.rng.sampling.distribution.DiscreteInverseCumulativeProbabilityFunction; + * + * // Distribution to sample. + * final IntegerDistribution dist = new BinomialDistribution(11, 0.56); + * // Create the sampler. + * final DiscreteSampler binomialSampler = + * new InverseMethodDiscreteSampler(RandomSource.create(RandomSource.MT), + * new DiscreteInverseCumulativeProbabilityFunction() { + * @Override + * public int inverseCumulativeProbability(double p) { + * return dist.inverseCumulativeProbability(p); + * } + * }); + * + * // Generate random deviate. + * int random = binomialSampler.sample(); + * </source></pre> */ public class InverseMethodDiscreteSampler extends AbstractDiscreteSampler { /** Inverse cumulative probability function. */ http://git-wip-us.apache.org/repos/asf/commons-rng/blob/2e0d86c5/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/package-info.java ---------------------------------------------------------------------- diff --git a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/package-info.java b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/package-info.java index 863fd22..a2b1db5 100644 --- a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/package-info.java +++ b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/package-info.java @@ -19,8 +19,22 @@ * <h3>Distribution samplers</h3> * * <p> - * This package contains classes fro sampling from statistical distributions. + * This package contains classes for sampling from statistical distributions. * </p> + * + * <p>As of version 1.0, the code for specific distributions was adapted from + * the corresponding classes in the development version of "Commons Math" (in + * package {@code org.apache.commons.math4.distribution}). + * </p> + * <p> + * When no specific algorithm is provided, one can still sample from any + * distribution, using the <em>inverse method</em>, as illustrated in: + * <ul> + * <li>{@link org.apache.commons.rng.sampling.distribution.InverseMethodDiscreteSampler InverseMethodDiscreteSampler}</li> + * <li>{@link org.apache.commons.rng.sampling.distribution.InverseMethodContinuousSampler InverseMethodContinuousSampler}</li> + * </ul> + * + * Algorithms are described in e.g. <a href="http://luc.devroye.org/chapter_nine.pdf">Luc Devroye (1986)</a>. */ package org.apache.commons.rng.sampling.distribution;