This is an automated email from the ASF dual-hosted git repository. aherbert pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-rng.git
commit 4b43e805fd856296fd1de450c62a9ce8fb3be011 Author: Alex Herbert <aherb...@apache.org> AuthorDate: Fri Jul 19 21:21:57 2019 +0100 RNG-110: Make distributions samplers implement SharedStateXXXSampler. XXX is Discrete or Continuous. All withUniformRandomProvider implementations updated to return an instance of the appropriate interface. --- .../AhrensDieterExponentialSampler.java | 5 ++- .../AhrensDieterMarsagliaTsangGammaSampler.java | 15 ++++----- .../distribution/AliasMethodDiscreteSampler.java | 9 +++-- .../BoxMullerNormalizedGaussianSampler.java | 5 ++- .../sampling/distribution/ChengBetaSampler.java | 5 ++- .../distribution/ContinuousUniformSampler.java | 3 +- .../distribution/DiscreteUniformSampler.java | 15 ++++----- .../rng/sampling/distribution/GaussianSampler.java | 4 +-- .../sampling/distribution/GeometricSampler.java | 20 +++++------ .../distribution/GuideTableDiscreteSampler.java | 5 ++- .../InverseTransformContinuousSampler.java | 5 ++- .../InverseTransformDiscreteSampler.java | 5 ++- .../InverseTransformParetoSampler.java | 5 ++- .../distribution/KempSmallMeanPoissonSampler.java | 5 ++- .../distribution/LargeMeanPoissonSampler.java | 39 +++++++++++++--------- .../sampling/distribution/LogNormalSampler.java | 4 +-- .../MarsagliaNormalizedGaussianSampler.java | 5 ++- .../MarsagliaTsangWangDiscreteSampler.java | 17 +++++----- .../rng/sampling/distribution/PoissonSampler.java | 18 +++------- .../RejectionInversionZipfSampler.java | 5 ++- .../distribution/SmallMeanPoissonSampler.java | 5 ++- .../ZigguratNormalizedGaussianSampler.java | 5 ++- .../AhrensDieterExponentialSamplerTest.java | 2 +- ...AhrensDieterMarsagliaTsangGammaSamplerTest.java | 2 +- .../AliasMethodDiscreteSamplerTest.java | 2 +- .../BoxMullerNormalisedGaussianSamplerTest.java | 2 +- .../distribution/ChengBetaSamplerTest.java | 2 +- .../distribution/ContinuousUniformSamplerTest.java | 2 +- .../distribution/DiscreteUniformSamplerTest.java | 2 +- .../sampling/distribution/GaussianSamplerTest.java | 2 +- .../distribution/GeometricSamplerTest.java | 2 +- .../GuideTableDiscreteSamplerTest.java | 2 +- .../InverseTransformContinuousSamplerTest.java | 2 +- .../InverseTransformDiscreteSamplerTest.java | 2 +- .../InverseTransformParetoSamplerTest.java | 2 +- .../KempSmallMeanPoissonSamplerTest.java | 2 +- .../distribution/LargeMeanPoissonSamplerTest.java | 2 +- .../distribution/LogNormalSamplerTest.java | 2 +- .../MarsagliaNormalisedGaussianSamplerTest.java | 2 +- .../MarsagliaTsangWangDiscreteSamplerTest.java | 4 +-- .../sampling/distribution/PoissonSamplerTest.java | 2 +- .../RejectionInversionZipfSamplerTest.java | 2 +- .../distribution/SmallMeanPoissonSamplerTest.java | 2 +- .../ZigguratNormalizedGaussianSamplerTest.java | 2 +- 44 files changed, 115 insertions(+), 135 deletions(-) diff --git a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/AhrensDieterExponentialSampler.java b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/AhrensDieterExponentialSampler.java index 2d93c28..0340a45 100644 --- a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/AhrensDieterExponentialSampler.java +++ b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/AhrensDieterExponentialSampler.java @@ -17,7 +17,6 @@ package org.apache.commons.rng.sampling.distribution; import org.apache.commons.rng.UniformRandomProvider; -import org.apache.commons.rng.sampling.SharedStateSampler; /** * Sampling from an <a href="http://mathworld.wolfram.com/ExponentialDistribution.html">exponential distribution</a>. @@ -28,7 +27,7 @@ import org.apache.commons.rng.sampling.SharedStateSampler; */ public class AhrensDieterExponentialSampler extends SamplerBase - implements ContinuousSampler, SharedStateSampler<AhrensDieterExponentialSampler> { + implements SharedStateContinuousSampler { /** * Table containing the constants * \( q_i = sum_{j=1}^i (\ln 2)^j / j! = \ln 2 + (\ln 2)^2 / 2 + ... + (\ln 2)^i / i! \) @@ -139,7 +138,7 @@ public class AhrensDieterExponentialSampler /** {@inheritDoc} */ @Override - public AhrensDieterExponentialSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateContinuousSampler withUniformRandomProvider(UniformRandomProvider rng) { return new AhrensDieterExponentialSampler(rng, this); } } diff --git a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/AhrensDieterMarsagliaTsangGammaSampler.java b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/AhrensDieterMarsagliaTsangGammaSampler.java index 08901ff..006581d 100644 --- a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/AhrensDieterMarsagliaTsangGammaSampler.java +++ b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/AhrensDieterMarsagliaTsangGammaSampler.java @@ -17,7 +17,6 @@ package org.apache.commons.rng.sampling.distribution; import org.apache.commons.rng.UniformRandomProvider; -import org.apache.commons.rng.sampling.SharedStateSampler; /** * Sampling from the <a href="http://mathworld.wolfram.com/GammaDistribution.html">Gamma distribution</a>. @@ -53,15 +52,15 @@ import org.apache.commons.rng.sampling.SharedStateSampler; */ public class AhrensDieterMarsagliaTsangGammaSampler extends SamplerBase - implements ContinuousSampler, SharedStateSampler<AhrensDieterMarsagliaTsangGammaSampler> { + implements SharedStateContinuousSampler { /** The appropriate gamma sampler for the parameters. */ - private final ContinuousSampler delegate; + private final SharedStateContinuousSampler delegate; /** * Base class for a sampler from the Gamma distribution. */ private abstract static class BaseGammaSampler - implements ContinuousSampler, SharedStateSampler<ContinuousSampler> { + implements SharedStateContinuousSampler { /** Underlying source of randomness. */ protected final UniformRandomProvider rng; @@ -183,7 +182,7 @@ public class AhrensDieterMarsagliaTsangGammaSampler } @Override - public ContinuousSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateContinuousSampler withUniformRandomProvider(UniformRandomProvider rng) { return new AhrensDieterGammaSampler(rng, this); } } @@ -263,7 +262,7 @@ public class AhrensDieterMarsagliaTsangGammaSampler } @Override - public ContinuousSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateContinuousSampler withUniformRandomProvider(UniformRandomProvider rng) { return new MarsagliaTsangGammaSampler(rng, this); } } @@ -291,7 +290,7 @@ public class AhrensDieterMarsagliaTsangGammaSampler private AhrensDieterMarsagliaTsangGammaSampler(UniformRandomProvider rng, AhrensDieterMarsagliaTsangGammaSampler source) { super(null); - delegate = ((SharedStateSampler<ContinuousSampler>)(source.delegate)).withUniformRandomProvider(rng); + delegate = source.delegate.withUniformRandomProvider(rng); } /** {@inheritDoc} */ @@ -308,7 +307,7 @@ public class AhrensDieterMarsagliaTsangGammaSampler /** {@inheritDoc} */ @Override - public AhrensDieterMarsagliaTsangGammaSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateContinuousSampler withUniformRandomProvider(UniformRandomProvider rng) { return new AhrensDieterMarsagliaTsangGammaSampler(rng, this); } } diff --git a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/AliasMethodDiscreteSampler.java b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/AliasMethodDiscreteSampler.java index c5018e0..2ad3593 100644 --- a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/AliasMethodDiscreteSampler.java +++ b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/AliasMethodDiscreteSampler.java @@ -17,7 +17,6 @@ package org.apache.commons.rng.sampling.distribution; import org.apache.commons.rng.UniformRandomProvider; -import org.apache.commons.rng.sampling.SharedStateSampler; import java.util.Arrays; @@ -63,15 +62,15 @@ import java.util.Arrays; * <p>Larger table sizes that are a power of 2 will benefit from fast algorithms for * {@link UniformRandomProvider#nextInt(int)} that exploit the power of 2.</p> * - * @since 1.3 * @see <a href="https://en.wikipedia.org/wiki/Alias_method">Alias Method</a> * @see <a href="http://www.keithschwarz.com/darts-dice-coins/">Darts, Dice, and Coins: * Sampling from a Discrete Distribution by Keith Schwartz</a> * @see <a href="https://ieeexplore.ieee.org/document/92917">Vose (1991) IEEE Transactions * on Software Engineering 17, 972-975.</a> + * @since 1.3 */ public class AliasMethodDiscreteSampler - implements DiscreteSampler, SharedStateSampler<AliasMethodDiscreteSampler> { + implements SharedStateDiscreteSampler { /** * The default alpha factor for zero-padding an input probability table. The default * value will pad the probabilities by to the next power-of-2. @@ -213,7 +212,7 @@ public class AliasMethodDiscreteSampler /** {@inheritDoc} */ @Override - public SmallTableAliasMethodDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { return new SmallTableAliasMethodDiscreteSampler(rng, probability, alias); } } @@ -280,7 +279,7 @@ public class AliasMethodDiscreteSampler /** {@inheritDoc} */ @Override - public AliasMethodDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { return new AliasMethodDiscreteSampler(rng, probability, alias); } diff --git a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/BoxMullerNormalizedGaussianSampler.java b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/BoxMullerNormalizedGaussianSampler.java index 5910060..d707670 100644 --- a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/BoxMullerNormalizedGaussianSampler.java +++ b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/BoxMullerNormalizedGaussianSampler.java @@ -17,7 +17,6 @@ package org.apache.commons.rng.sampling.distribution; import org.apache.commons.rng.UniformRandomProvider; -import org.apache.commons.rng.sampling.SharedStateSampler; /** * <a href="https://en.wikipedia.org/wiki/Box%E2%80%93Muller_transform"> @@ -29,7 +28,7 @@ import org.apache.commons.rng.sampling.SharedStateSampler; * @since 1.1 */ public class BoxMullerNormalizedGaussianSampler - implements NormalizedGaussianSampler, SharedStateSampler<BoxMullerNormalizedGaussianSampler> { + implements NormalizedGaussianSampler, SharedStateContinuousSampler { /** Next gaussian. */ private double nextGaussian = Double.NaN; /** Underlying source of randomness. */ @@ -79,7 +78,7 @@ public class BoxMullerNormalizedGaussianSampler /** {@inheritDoc} */ @Override - public BoxMullerNormalizedGaussianSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateContinuousSampler withUniformRandomProvider(UniformRandomProvider rng) { return new BoxMullerNormalizedGaussianSampler(rng); } } diff --git a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/ChengBetaSampler.java b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/ChengBetaSampler.java index 682ae9c..6fe83e7 100644 --- a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/ChengBetaSampler.java +++ b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/ChengBetaSampler.java @@ -17,7 +17,6 @@ package org.apache.commons.rng.sampling.distribution; import org.apache.commons.rng.UniformRandomProvider; -import org.apache.commons.rng.sampling.SharedStateSampler; /** * Utility class implementing Cheng's algorithms for beta distribution sampling. @@ -36,7 +35,7 @@ import org.apache.commons.rng.sampling.SharedStateSampler; */ public class ChengBetaSampler extends SamplerBase - implements ContinuousSampler, SharedStateSampler<ChengBetaSampler> { + implements SharedStateContinuousSampler { /** 1/2. */ private static final double ONE_HALF = 1d / 2; /** 1/4. */ @@ -105,7 +104,7 @@ public class ChengBetaSampler /** {@inheritDoc} */ @Override - public ChengBetaSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateContinuousSampler withUniformRandomProvider(UniformRandomProvider rng) { return new ChengBetaSampler(rng, this); } diff --git a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/ContinuousUniformSampler.java b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/ContinuousUniformSampler.java index 2a3a9ea..43a7ec9 100644 --- a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/ContinuousUniformSampler.java +++ b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/ContinuousUniformSampler.java @@ -17,7 +17,6 @@ package org.apache.commons.rng.sampling.distribution; import org.apache.commons.rng.UniformRandomProvider; -import org.apache.commons.rng.sampling.SharedStateSampler; /** * Sampling from a uniform distribution. @@ -28,7 +27,7 @@ import org.apache.commons.rng.sampling.SharedStateSampler; */ public class ContinuousUniformSampler extends SamplerBase - implements ContinuousSampler, SharedStateSampler<ContinuousUniformSampler> { + implements SharedStateContinuousSampler { /** Lower bound. */ private final double lo; /** Higher bound. */ diff --git a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/DiscreteUniformSampler.java b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/DiscreteUniformSampler.java index 1809c4c..bc1830c 100644 --- a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/DiscreteUniformSampler.java +++ b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/DiscreteUniformSampler.java @@ -18,7 +18,6 @@ package org.apache.commons.rng.sampling.distribution; import org.apache.commons.rng.UniformRandomProvider; -import org.apache.commons.rng.sampling.SharedStateSampler; /** * Discrete uniform distribution sampler. @@ -31,16 +30,16 @@ import org.apache.commons.rng.sampling.SharedStateSampler; */ public class DiscreteUniformSampler extends SamplerBase - implements DiscreteSampler, SharedStateSampler<DiscreteUniformSampler> { + implements SharedStateDiscreteSampler { /** The appropriate uniform sampler for the parameters. */ - private final DiscreteSampler delegate; + private final SharedStateDiscreteSampler delegate; /** * Base class for a sampler from a discrete uniform distribution. */ private abstract static class AbstractDiscreteUniformSampler - implements DiscreteSampler, SharedStateSampler<DiscreteSampler> { + implements SharedStateDiscreteSampler { /** Underlying source of randomness. */ protected final UniformRandomProvider rng; @@ -91,7 +90,7 @@ public class DiscreteUniformSampler } @Override - public DiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { return new SmallRangeDiscreteUniformSampler(rng, lower, range); } } @@ -134,7 +133,7 @@ public class DiscreteUniformSampler } @Override - public DiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { return new LargeRangeDiscreteUniformSampler(rng, lower, upper); } } @@ -170,7 +169,7 @@ public class DiscreteUniformSampler private DiscreteUniformSampler(UniformRandomProvider rng, DiscreteUniformSampler source) { super(null); - delegate = ((SharedStateSampler<DiscreteSampler>)(source.delegate)).withUniformRandomProvider(rng); + delegate = source.delegate.withUniformRandomProvider(rng); } /** {@inheritDoc} */ @@ -187,7 +186,7 @@ public class DiscreteUniformSampler /** {@inheritDoc} */ @Override - public DiscreteUniformSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { return new DiscreteUniformSampler(rng, this); } } diff --git a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/GaussianSampler.java b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/GaussianSampler.java index 8362387..91c29e7 100644 --- a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/GaussianSampler.java +++ b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/GaussianSampler.java @@ -25,7 +25,7 @@ import org.apache.commons.rng.sampling.SharedStateSampler; * * @since 1.1 */ -public class GaussianSampler implements ContinuousSampler, SharedStateSampler<GaussianSampler> { +public class GaussianSampler implements SharedStateContinuousSampler { /** Mean. */ private final double mean; /** standardDeviation. */ @@ -85,7 +85,7 @@ public class GaussianSampler implements ContinuousSampler, SharedStateSampler<Ga * sharing state. */ @Override - public GaussianSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateContinuousSampler withUniformRandomProvider(UniformRandomProvider rng) { return new GaussianSampler(rng, this); } } diff --git a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/GeometricSampler.java b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/GeometricSampler.java index f1e3470..a65a46e 100644 --- a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/GeometricSampler.java +++ b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/GeometricSampler.java @@ -17,7 +17,6 @@ package org.apache.commons.rng.sampling.distribution; import org.apache.commons.rng.UniformRandomProvider; -import org.apache.commons.rng.sampling.SharedStateSampler; /** * Sampling from a <a href="https://en.wikipedia.org/wiki/Geometric_distribution">geometric @@ -46,15 +45,15 @@ import org.apache.commons.rng.sampling.SharedStateSampler; * * @since 1.3 */ -public class GeometricSampler implements DiscreteSampler, SharedStateSampler<GeometricSampler> { +public class GeometricSampler implements SharedStateDiscreteSampler { /** The appropriate geometric sampler for the parameters. */ - private final DiscreteSampler delegate; + private final SharedStateDiscreteSampler delegate; /** * Sample from the geometric distribution when the probability of success is 1. */ private static class GeometricP1Sampler - implements DiscreteSampler, SharedStateSampler<DiscreteSampler> { + implements SharedStateDiscreteSampler { /** The single instance. */ static final GeometricP1Sampler INSTANCE = new GeometricP1Sampler(); @@ -70,7 +69,7 @@ public class GeometricSampler implements DiscreteSampler, SharedStateSampler<Geo } @Override - public DiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { // No requirement for a new instance return this; } @@ -80,11 +79,11 @@ public class GeometricSampler implements DiscreteSampler, SharedStateSampler<Geo * Sample from the geometric distribution by using a related exponential distribution. */ private static class GeometricExponentialSampler - implements DiscreteSampler, SharedStateSampler<DiscreteSampler> { + implements SharedStateDiscreteSampler { /** Underlying source of randomness. Used only for the {@link #toString()} method. */ private final UniformRandomProvider rng; /** The related exponential sampler for the geometric distribution. */ - private final AhrensDieterExponentialSampler exponentialSampler; + private final SharedStateContinuousSampler exponentialSampler; /** * @param rng Generator of uniformly distributed random numbers @@ -128,7 +127,7 @@ public class GeometricSampler implements DiscreteSampler, SharedStateSampler<Geo } @Override - public DiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { return new GeometricExponentialSampler(rng, this); } } @@ -158,9 +157,8 @@ public class GeometricSampler implements DiscreteSampler, SharedStateSampler<Geo * @param rng Generator of uniformly distributed random numbers * @param source Source to copy. */ - @SuppressWarnings("unchecked") private GeometricSampler(UniformRandomProvider rng, GeometricSampler source) { - delegate = ((SharedStateSampler<DiscreteSampler>)(source.delegate)).withUniformRandomProvider(rng); + delegate = source.delegate.withUniformRandomProvider(rng); } /** @@ -182,7 +180,7 @@ public class GeometricSampler implements DiscreteSampler, SharedStateSampler<Geo /** {@inheritDoc} */ @Override - public GeometricSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { return new GeometricSampler(rng, this); } } diff --git a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/GuideTableDiscreteSampler.java b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/GuideTableDiscreteSampler.java index cb02cbb..0ca3315 100644 --- a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/GuideTableDiscreteSampler.java +++ b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/GuideTableDiscreteSampler.java @@ -17,7 +17,6 @@ package org.apache.commons.rng.sampling.distribution; import org.apache.commons.rng.UniformRandomProvider; -import org.apache.commons.rng.sampling.SharedStateSampler; /** * Compute a sample from a discrete probability distribution. The cumulative probability @@ -41,7 +40,7 @@ import org.apache.commons.rng.sampling.SharedStateSampler; * @since 1.3 */ public class GuideTableDiscreteSampler - implements DiscreteSampler, SharedStateSampler<GuideTableDiscreteSampler> { + implements SharedStateDiscreteSampler { /** The default value for {@code alpha}. */ private static final double DEFAULT_ALPHA = 1.0; /** Underlying source of randomness. */ @@ -213,7 +212,7 @@ public class GuideTableDiscreteSampler /** {@inheritDoc} */ @Override - public GuideTableDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { return new GuideTableDiscreteSampler(rng, this); } } diff --git a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/InverseTransformContinuousSampler.java b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/InverseTransformContinuousSampler.java index f60e1d0..4401d9e 100644 --- a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/InverseTransformContinuousSampler.java +++ b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/InverseTransformContinuousSampler.java @@ -17,7 +17,6 @@ package org.apache.commons.rng.sampling.distribution; import org.apache.commons.rng.UniformRandomProvider; -import org.apache.commons.rng.sampling.SharedStateSampler; /** * Distribution sampler that uses the @@ -58,7 +57,7 @@ import org.apache.commons.rng.sampling.SharedStateSampler; */ public class InverseTransformContinuousSampler extends SamplerBase - implements ContinuousSampler, SharedStateSampler<InverseTransformContinuousSampler> { + implements SharedStateContinuousSampler { /** Inverse cumulative probability function. */ private final ContinuousInverseCumulativeProbabilityFunction function; /** Underlying source of randomness. */ @@ -94,7 +93,7 @@ public class InverseTransformContinuousSampler * must be suitable for concurrent use to ensure thread safety.</p> */ @Override - public InverseTransformContinuousSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateContinuousSampler withUniformRandomProvider(UniformRandomProvider rng) { return new InverseTransformContinuousSampler(rng, function); } } diff --git a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/InverseTransformDiscreteSampler.java b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/InverseTransformDiscreteSampler.java index e10e2c4..6067a8c 100644 --- a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/InverseTransformDiscreteSampler.java +++ b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/InverseTransformDiscreteSampler.java @@ -17,7 +17,6 @@ package org.apache.commons.rng.sampling.distribution; import org.apache.commons.rng.UniformRandomProvider; -import org.apache.commons.rng.sampling.SharedStateSampler; /** * Distribution sampler that uses the @@ -58,7 +57,7 @@ import org.apache.commons.rng.sampling.SharedStateSampler; */ public class InverseTransformDiscreteSampler extends SamplerBase - implements DiscreteSampler, SharedStateSampler<InverseTransformDiscreteSampler> { + implements SharedStateDiscreteSampler { /** Inverse cumulative probability function. */ private final DiscreteInverseCumulativeProbabilityFunction function; /** Underlying source of randomness. */ @@ -94,7 +93,7 @@ public class InverseTransformDiscreteSampler * must be suitable for concurrent use to ensure thread safety.</p> */ @Override - public InverseTransformDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { return new InverseTransformDiscreteSampler(rng, function); } } diff --git a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/InverseTransformParetoSampler.java b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/InverseTransformParetoSampler.java index 4068b49..a7b6d7c 100644 --- a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/InverseTransformParetoSampler.java +++ b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/InverseTransformParetoSampler.java @@ -17,7 +17,6 @@ package org.apache.commons.rng.sampling.distribution; import org.apache.commons.rng.UniformRandomProvider; -import org.apache.commons.rng.sampling.SharedStateSampler; /** * Sampling from a <a href="https://en.wikipedia.org/wiki/Pareto_distribution">Pareto distribution</a>. @@ -28,7 +27,7 @@ import org.apache.commons.rng.sampling.SharedStateSampler; */ public class InverseTransformParetoSampler extends SamplerBase - implements ContinuousSampler, SharedStateSampler<InverseTransformParetoSampler> { + implements SharedStateContinuousSampler { /** Scale. */ private final double scale; /** 1 / Shape. */ @@ -83,7 +82,7 @@ public class InverseTransformParetoSampler /** {@inheritDoc} */ @Override - public InverseTransformParetoSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateContinuousSampler withUniformRandomProvider(UniformRandomProvider rng) { return new InverseTransformParetoSampler(rng, this); } } diff --git a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/KempSmallMeanPoissonSampler.java b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/KempSmallMeanPoissonSampler.java index b3203d3..7c4a09c 100644 --- a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/KempSmallMeanPoissonSampler.java +++ b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/KempSmallMeanPoissonSampler.java @@ -17,7 +17,6 @@ package org.apache.commons.rng.sampling.distribution; import org.apache.commons.rng.UniformRandomProvider; -import org.apache.commons.rng.sampling.SharedStateSampler; /** * Sampler for the <a href="http://mathworld.wolfram.com/PoissonDistribution.html">Poisson @@ -47,7 +46,7 @@ import org.apache.commons.rng.sampling.SharedStateSampler; * 249-253</a> */ public class KempSmallMeanPoissonSampler - implements DiscreteSampler, SharedStateSampler<KempSmallMeanPoissonSampler> { + implements SharedStateDiscreteSampler { /** Underlying source of randomness. */ private final UniformRandomProvider rng; /** @@ -129,7 +128,7 @@ public class KempSmallMeanPoissonSampler /** {@inheritDoc} */ @Override - public KempSmallMeanPoissonSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { return new KempSmallMeanPoissonSampler(rng, this); } } diff --git a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/LargeMeanPoissonSampler.java b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/LargeMeanPoissonSampler.java index ce8d9ae..2a68e32 100644 --- a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/LargeMeanPoissonSampler.java +++ b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/LargeMeanPoissonSampler.java @@ -17,7 +17,6 @@ package org.apache.commons.rng.sampling.distribution; import org.apache.commons.rng.UniformRandomProvider; -import org.apache.commons.rng.sampling.SharedStateSampler; import org.apache.commons.rng.sampling.distribution.InternalUtils.FactorialLog; /** @@ -45,13 +44,26 @@ import org.apache.commons.rng.sampling.distribution.InternalUtils.FactorialLog; * @since 1.1 */ public class LargeMeanPoissonSampler - implements DiscreteSampler, SharedStateSampler<LargeMeanPoissonSampler> { + implements SharedStateDiscreteSampler { /** Upper bound to avoid truncation. */ private static final double MAX_MEAN = 0.5 * Integer.MAX_VALUE; /** Class to compute {@code log(n!)}. This has no cached values. */ private static final InternalUtils.FactorialLog NO_CACHE_FACTORIAL_LOG; /** Used when there is no requirement for a small mean Poisson sampler. */ - private static final KempSmallMeanPoissonSampler NO_SMALL_MEAN_POISSON_SAMPLER = null; + private static final SharedStateDiscreteSampler NO_SMALL_MEAN_POISSON_SAMPLER = + new SharedStateDiscreteSampler() { + @Override + public SharedStateDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { + // No requirement for RNG + return this; + } + + @Override + public int sample() { + // No Poisson sample + return 0; + } + }; static { // Create without a cache. @@ -61,9 +73,9 @@ public class LargeMeanPoissonSampler /** Underlying source of randomness. */ private final UniformRandomProvider rng; /** Exponential. */ - private final AhrensDieterExponentialSampler exponential; + private final SharedStateContinuousSampler exponential; /** Gaussian. */ - private final ContinuousSampler gaussian; + private final SharedStateContinuousSampler gaussian; /** Local class to compute {@code log(n!)}. This may have cached values. */ private final InternalUtils.FactorialLog factorialLog; @@ -101,7 +113,7 @@ public class LargeMeanPoissonSampler private final double c1; /** The internal Poisson sampler for the lambda fraction. */ - private final KempSmallMeanPoissonSampler smallMeanPoissonSampler; + private final SharedStateDiscreteSampler smallMeanPoissonSampler; /** * @param rng Generator of uniformly distributed random numbers. @@ -195,8 +207,7 @@ public class LargeMeanPoissonSampler LargeMeanPoissonSampler source) { this.rng = rng; - // The Gaussian sampler has no shared state - gaussian = new ZigguratNormalizedGaussianSampler(rng); + gaussian = source.gaussian.withUniformRandomProvider(rng); exponential = source.exponential.withUniformRandomProvider(rng); // Reuse the cache factorialLog = source.factorialLog; @@ -212,18 +223,14 @@ public class LargeMeanPoissonSampler c1 = source.c1; // Share the state of the small sampler - smallMeanPoissonSampler = source.smallMeanPoissonSampler == null ? - NO_SMALL_MEAN_POISSON_SAMPLER : // Not used. - source.smallMeanPoissonSampler.withUniformRandomProvider(rng); + smallMeanPoissonSampler = source.smallMeanPoissonSampler.withUniformRandomProvider(rng); } /** {@inheritDoc} */ @Override public int sample() { - - final int y2 = (smallMeanPoissonSampler == null) ? - 0 : // No lambda fraction - smallMeanPoissonSampler.sample(); + // This will never be null. It may be a no-op delegate that returns zero. + final int y2 = smallMeanPoissonSampler.sample(); double x; double y; @@ -295,7 +302,7 @@ public class LargeMeanPoissonSampler /** {@inheritDoc} */ @Override - public LargeMeanPoissonSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { return new LargeMeanPoissonSampler(rng, this); } diff --git a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/LogNormalSampler.java b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/LogNormalSampler.java index 55dab9e..9bf9568 100644 --- a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/LogNormalSampler.java +++ b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/LogNormalSampler.java @@ -24,7 +24,7 @@ import org.apache.commons.rng.sampling.SharedStateSampler; * * @since 1.1 */ -public class LogNormalSampler implements ContinuousSampler, SharedStateSampler<LogNormalSampler> { +public class LogNormalSampler implements SharedStateContinuousSampler { /** Scale. */ private final double scale; /** Shape. */ @@ -86,7 +86,7 @@ public class LogNormalSampler implements ContinuousSampler, SharedStateSampler<L * sharing state. */ @Override - public LogNormalSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateContinuousSampler withUniformRandomProvider(UniformRandomProvider rng) { return new LogNormalSampler(rng, this); } } diff --git a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/MarsagliaNormalizedGaussianSampler.java b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/MarsagliaNormalizedGaussianSampler.java index 421288a..7068052 100644 --- a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/MarsagliaNormalizedGaussianSampler.java +++ b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/MarsagliaNormalizedGaussianSampler.java @@ -17,7 +17,6 @@ package org.apache.commons.rng.sampling.distribution; import org.apache.commons.rng.UniformRandomProvider; -import org.apache.commons.rng.sampling.SharedStateSampler; /** * <a href="https://en.wikipedia.org/wiki/Marsaglia_polar_method"> @@ -31,7 +30,7 @@ import org.apache.commons.rng.sampling.SharedStateSampler; * @since 1.1 */ public class MarsagliaNormalizedGaussianSampler - implements NormalizedGaussianSampler, SharedStateSampler<MarsagliaNormalizedGaussianSampler> { + implements NormalizedGaussianSampler, SharedStateContinuousSampler { /** Next gaussian. */ private double nextGaussian = Double.NaN; /** Underlying source of randomness. */ @@ -88,7 +87,7 @@ public class MarsagliaNormalizedGaussianSampler /** {@inheritDoc} */ @Override - public MarsagliaNormalizedGaussianSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateContinuousSampler withUniformRandomProvider(UniformRandomProvider rng) { return new MarsagliaNormalizedGaussianSampler(rng); } } diff --git a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/MarsagliaTsangWangDiscreteSampler.java b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/MarsagliaTsangWangDiscreteSampler.java index c7528f4..32bc12e 100644 --- a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/MarsagliaTsangWangDiscreteSampler.java +++ b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/MarsagliaTsangWangDiscreteSampler.java @@ -17,7 +17,6 @@ package org.apache.commons.rng.sampling.distribution; import org.apache.commons.rng.UniformRandomProvider; -import org.apache.commons.rng.sampling.SharedStateSampler; /** * Sampler for a discrete distribution using an optimised look-up table. @@ -51,7 +50,7 @@ import org.apache.commons.rng.sampling.SharedStateSampler; * 11, Issue 3</a> */ public abstract class MarsagliaTsangWangDiscreteSampler - implements DiscreteSampler, SharedStateSampler<MarsagliaTsangWangDiscreteSampler> { + implements SharedStateDiscreteSampler { /** The value 2<sup>8</sup> as an {@code int}. */ private static final int INT_8 = 1 << 8; /** The value 2<sup>16</sup> as an {@code int}. */ @@ -248,7 +247,7 @@ public abstract class MarsagliaTsangWangDiscreteSampler } @Override - public MarsagliaTsangWangDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { return new MarsagliaTsangWangBase64Int8DiscreteSampler(rng, this); } } @@ -388,7 +387,7 @@ public abstract class MarsagliaTsangWangDiscreteSampler } @Override - public MarsagliaTsangWangDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { return new MarsagliaTsangWangBase64Int16DiscreteSampler(rng, this); } } @@ -524,7 +523,7 @@ public abstract class MarsagliaTsangWangDiscreteSampler } @Override - public MarsagliaTsangWangDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { return new MarsagliaTsangWangBase64Int32DiscreteSampler(rng, this); } } @@ -557,7 +556,7 @@ public abstract class MarsagliaTsangWangDiscreteSampler } @Override - public MarsagliaTsangWangDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { // No shared state return this; } @@ -576,14 +575,14 @@ public abstract class MarsagliaTsangWangDiscreteSampler /** The number of trials. */ private final int trials; /** The Binomial distribution sampler. */ - private final MarsagliaTsangWangDiscreteSampler sampler; + private final SharedStateDiscreteSampler sampler; /** * @param trials Number of trials. * @param sampler Binomial distribution sampler. */ MarsagliaTsangWangInversionBinomialSampler(int trials, - MarsagliaTsangWangDiscreteSampler sampler) { + SharedStateDiscreteSampler sampler) { super(null, BINOMIAL_NAME); this.trials = trials; this.sampler = sampler; @@ -600,7 +599,7 @@ public abstract class MarsagliaTsangWangDiscreteSampler } @Override - public MarsagliaTsangWangDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { return new MarsagliaTsangWangInversionBinomialSampler(this.trials, this.sampler.withUniformRandomProvider(rng)); } diff --git a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/PoissonSampler.java b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/PoissonSampler.java index 804a9e3..36cc04b 100644 --- a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/PoissonSampler.java +++ b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/PoissonSampler.java @@ -17,7 +17,6 @@ package org.apache.commons.rng.sampling.distribution; import org.apache.commons.rng.UniformRandomProvider; -import org.apache.commons.rng.sampling.SharedStateSampler; /** * Sampler for the <a href="http://mathworld.wolfram.com/PoissonDistribution.html">Poisson distribution</a>. @@ -52,7 +51,7 @@ import org.apache.commons.rng.sampling.SharedStateSampler; */ public class PoissonSampler extends SamplerBase - implements DiscreteSampler, SharedStateSampler<PoissonSampler> { + implements SharedStateDiscreteSampler { /** * Value for switching sampling algorithm. @@ -61,7 +60,7 @@ public class PoissonSampler */ static final double PIVOT = 40; /** The internal Poisson sampler. */ - private final DiscreteSampler poissonSamplerDelegate; + private final SharedStateDiscreteSampler poissonSamplerDelegate; /** * @param rng Generator of uniformly distributed random numbers. @@ -85,16 +84,9 @@ public class PoissonSampler * @param source Source to copy. */ private PoissonSampler(UniformRandomProvider rng, - PoissonSampler source) { + PoissonSampler source) { super(null); - - if (source.poissonSamplerDelegate instanceof SmallMeanPoissonSampler) { - poissonSamplerDelegate = - ((SmallMeanPoissonSampler)source.poissonSamplerDelegate).withUniformRandomProvider(rng); - } else { - poissonSamplerDelegate = - ((LargeMeanPoissonSampler)source.poissonSamplerDelegate).withUniformRandomProvider(rng); - } + poissonSamplerDelegate = source.poissonSamplerDelegate.withUniformRandomProvider(rng); } /** {@inheritDoc} */ @@ -111,7 +103,7 @@ public class PoissonSampler /** {@inheritDoc} */ @Override - public PoissonSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { return new PoissonSampler(rng, this); } } diff --git a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/RejectionInversionZipfSampler.java b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/RejectionInversionZipfSampler.java index 112f3fe..fb8cb9d 100644 --- a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/RejectionInversionZipfSampler.java +++ b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/RejectionInversionZipfSampler.java @@ -18,7 +18,6 @@ package org.apache.commons.rng.sampling.distribution; import org.apache.commons.rng.UniformRandomProvider; -import org.apache.commons.rng.sampling.SharedStateSampler; /** * Implementation of the <a href="https://en.wikipedia.org/wiki/Zipf's_law">Zipf distribution</a>. @@ -29,7 +28,7 @@ import org.apache.commons.rng.sampling.SharedStateSampler; */ public class RejectionInversionZipfSampler extends SamplerBase - implements DiscreteSampler, SharedStateSampler<RejectionInversionZipfSampler> { + implements SharedStateDiscreteSampler { /** Threshold below which Taylor series will be used. */ private static final double TAYLOR_THRESHOLD = 1e-8; /** 1/2. */ @@ -195,7 +194,7 @@ public class RejectionInversionZipfSampler /** {@inheritDoc} */ @Override - public RejectionInversionZipfSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { return new RejectionInversionZipfSampler(rng, this); } diff --git a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/SmallMeanPoissonSampler.java b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/SmallMeanPoissonSampler.java index e6a9722..331b6b0 100644 --- a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/SmallMeanPoissonSampler.java +++ b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/SmallMeanPoissonSampler.java @@ -17,7 +17,6 @@ package org.apache.commons.rng.sampling.distribution; import org.apache.commons.rng.UniformRandomProvider; -import org.apache.commons.rng.sampling.SharedStateSampler; /** * Sampler for the <a href="http://mathworld.wolfram.com/PoissonDistribution.html">Poisson distribution</a>. @@ -43,7 +42,7 @@ import org.apache.commons.rng.sampling.SharedStateSampler; * @since 1.1 */ public class SmallMeanPoissonSampler - implements DiscreteSampler, SharedStateSampler<SmallMeanPoissonSampler> { + implements SharedStateDiscreteSampler { /** * Pre-compute {@code Math.exp(-mean)}. * Note: This is the probability of the Poisson sample {@code P(n=0)}. @@ -111,7 +110,7 @@ public class SmallMeanPoissonSampler /** {@inheritDoc} */ @Override - public SmallMeanPoissonSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) { return new SmallMeanPoissonSampler(rng, this); } } diff --git a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/ZigguratNormalizedGaussianSampler.java b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/ZigguratNormalizedGaussianSampler.java index a1ba383..6b8588a 100644 --- a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/ZigguratNormalizedGaussianSampler.java +++ b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/ZigguratNormalizedGaussianSampler.java @@ -18,7 +18,6 @@ package org.apache.commons.rng.sampling.distribution; import org.apache.commons.rng.UniformRandomProvider; -import org.apache.commons.rng.sampling.SharedStateSampler; /** * <a href="https://en.wikipedia.org/wiki/Ziggurat_algorithm"> @@ -39,7 +38,7 @@ import org.apache.commons.rng.sampling.SharedStateSampler; * @since 1.1 */ public class ZigguratNormalizedGaussianSampler - implements NormalizedGaussianSampler, SharedStateSampler<ZigguratNormalizedGaussianSampler> { + implements NormalizedGaussianSampler, SharedStateContinuousSampler { /** Start of tail. */ private static final double R = 3.442619855899; /** Inverse of R. */ @@ -164,7 +163,7 @@ public class ZigguratNormalizedGaussianSampler /** {@inheritDoc} */ @Override - public ZigguratNormalizedGaussianSampler withUniformRandomProvider(UniformRandomProvider rng) { + public SharedStateContinuousSampler withUniformRandomProvider(UniformRandomProvider rng) { return new ZigguratNormalizedGaussianSampler(rng); } } diff --git a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/AhrensDieterExponentialSamplerTest.java b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/AhrensDieterExponentialSamplerTest.java index 739a178..6fe5139 100644 --- a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/AhrensDieterExponentialSamplerTest.java +++ b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/AhrensDieterExponentialSamplerTest.java @@ -49,7 +49,7 @@ public class AhrensDieterExponentialSamplerTest { final double mean = 1.23; final AhrensDieterExponentialSampler sampler1 = new AhrensDieterExponentialSampler(rng1, mean); - final AhrensDieterExponentialSampler sampler2 = sampler1.withUniformRandomProvider(rng2); + final SharedStateContinuousSampler sampler2 = sampler1.withUniformRandomProvider(rng2); RandomAssert.assertProduceSameSequence(sampler1, sampler2); } } diff --git a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/AhrensDieterMarsagliaTsangGammaSamplerTest.java b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/AhrensDieterMarsagliaTsangGammaSamplerTest.java index 11ba878..27a4198 100644 --- a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/AhrensDieterMarsagliaTsangGammaSamplerTest.java +++ b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/AhrensDieterMarsagliaTsangGammaSamplerTest.java @@ -81,7 +81,7 @@ public class AhrensDieterMarsagliaTsangGammaSamplerTest { final UniformRandomProvider rng2 = RandomSource.create(RandomSource.SPLIT_MIX_64, 0L); final AhrensDieterMarsagliaTsangGammaSampler sampler1 = new AhrensDieterMarsagliaTsangGammaSampler(rng1, alpha, theta); - final AhrensDieterMarsagliaTsangGammaSampler sampler2 = sampler1.withUniformRandomProvider(rng2); + final SharedStateContinuousSampler sampler2 = sampler1.withUniformRandomProvider(rng2); RandomAssert.assertProduceSameSequence(sampler1, sampler2); } } diff --git a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/AliasMethodDiscreteSamplerTest.java b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/AliasMethodDiscreteSamplerTest.java index e162f19..e5f9108 100644 --- a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/AliasMethodDiscreteSamplerTest.java +++ b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/AliasMethodDiscreteSamplerTest.java @@ -277,7 +277,7 @@ public class AliasMethodDiscreteSamplerTest { // Use negative alpha to disable padding final AliasMethodDiscreteSampler sampler1 = AliasMethodDiscreteSampler.create(rng1, probabilities, -1); - final AliasMethodDiscreteSampler sampler2 = sampler1.withUniformRandomProvider(rng2); + final SharedStateDiscreteSampler sampler2 = sampler1.withUniformRandomProvider(rng2); RandomAssert.assertProduceSameSequence(sampler1, sampler2); } } diff --git a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/BoxMullerNormalisedGaussianSamplerTest.java b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/BoxMullerNormalisedGaussianSamplerTest.java index 191cbc5..6e21e62 100644 --- a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/BoxMullerNormalisedGaussianSamplerTest.java +++ b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/BoxMullerNormalisedGaussianSamplerTest.java @@ -34,7 +34,7 @@ public class BoxMullerNormalisedGaussianSamplerTest { final UniformRandomProvider rng2 = RandomSource.create(RandomSource.SPLIT_MIX_64, 0L); final BoxMullerNormalizedGaussianSampler sampler1 = new BoxMullerNormalizedGaussianSampler(rng1); - final BoxMullerNormalizedGaussianSampler sampler2 = sampler1.withUniformRandomProvider(rng2); + final SharedStateContinuousSampler sampler2 = sampler1.withUniformRandomProvider(rng2); RandomAssert.assertProduceSameSequence(sampler1, sampler2); } } diff --git a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/ChengBetaSamplerTest.java b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/ChengBetaSamplerTest.java index 24325b0..cb630aa 100644 --- a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/ChengBetaSamplerTest.java +++ b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/ChengBetaSamplerTest.java @@ -65,7 +65,7 @@ public class ChengBetaSamplerTest { final double beta = 4.56; final ChengBetaSampler sampler1 = new ChengBetaSampler(rng1, alpha, beta); - final ChengBetaSampler sampler2 = sampler1.withUniformRandomProvider(rng2); + final SharedStateContinuousSampler sampler2 = sampler1.withUniformRandomProvider(rng2); RandomAssert.assertProduceSameSequence(sampler1, sampler2); } } diff --git a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/ContinuousUniformSamplerTest.java b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/ContinuousUniformSamplerTest.java index 06bf53f..36b9eba 100644 --- a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/ContinuousUniformSamplerTest.java +++ b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/ContinuousUniformSamplerTest.java @@ -60,7 +60,7 @@ public class ContinuousUniformSamplerTest { final double high = 4.56; final ContinuousUniformSampler sampler1 = new ContinuousUniformSampler(rng1, low, high); - final ContinuousUniformSampler sampler2 = sampler1.withUniformRandomProvider(rng2); + final SharedStateContinuousSampler sampler2 = sampler1.withUniformRandomProvider(rng2); RandomAssert.assertProduceSameSequence(sampler1, sampler2); } } diff --git a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/DiscreteUniformSamplerTest.java b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/DiscreteUniformSamplerTest.java index 3a0a34c..9b76e7a 100644 --- a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/DiscreteUniformSamplerTest.java +++ b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/DiscreteUniformSamplerTest.java @@ -64,7 +64,7 @@ public class DiscreteUniformSamplerTest { final UniformRandomProvider rng2 = RandomSource.create(RandomSource.SPLIT_MIX_64, 0L); final DiscreteUniformSampler sampler1 = new DiscreteUniformSampler(rng1, lower, upper); - final DiscreteUniformSampler sampler2 = sampler1.withUniformRandomProvider(rng2); + final SharedStateDiscreteSampler sampler2 = sampler1.withUniformRandomProvider(rng2); RandomAssert.assertProduceSameSequence(sampler1, sampler2); } } diff --git a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/GaussianSamplerTest.java b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/GaussianSamplerTest.java index f4afb63..28ca3c0 100644 --- a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/GaussianSamplerTest.java +++ b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/GaussianSamplerTest.java @@ -54,7 +54,7 @@ public class GaussianSamplerTest { final double standardDeviation = 4.56; final GaussianSampler sampler1 = new GaussianSampler(gauss, mean, standardDeviation); - final GaussianSampler sampler2 = sampler1.withUniformRandomProvider(rng2); + final SharedStateContinuousSampler sampler2 = sampler1.withUniformRandomProvider(rng2); RandomAssert.assertProduceSameSequence(sampler1, sampler2); } diff --git a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/GeometricSamplerTest.java b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/GeometricSamplerTest.java index 66eaee4..f384485 100644 --- a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/GeometricSamplerTest.java +++ b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/GeometricSamplerTest.java @@ -140,7 +140,7 @@ public class GeometricSamplerTest { final UniformRandomProvider rng2 = RandomSource.create(RandomSource.SPLIT_MIX_64, 0L); final GeometricSampler sampler1 = new GeometricSampler(rng1, probabilityOfSuccess); - final GeometricSampler sampler2 = sampler1.withUniformRandomProvider(rng2); + final SharedStateDiscreteSampler sampler2 = sampler1.withUniformRandomProvider(rng2); RandomAssert.assertProduceSameSequence(sampler1, sampler2); } } diff --git a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/GuideTableDiscreteSamplerTest.java b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/GuideTableDiscreteSamplerTest.java index ec89352..e38b3db 100644 --- a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/GuideTableDiscreteSamplerTest.java +++ b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/GuideTableDiscreteSamplerTest.java @@ -246,7 +246,7 @@ public class GuideTableDiscreteSamplerTest { final double[] probabilities = {0.1, 0, 0.2, 0.3, 0.1, 0.3, 0}; final GuideTableDiscreteSampler sampler1 = new GuideTableDiscreteSampler(rng1, probabilities); - final GuideTableDiscreteSampler sampler2 = sampler1.withUniformRandomProvider(rng2); + final SharedStateDiscreteSampler sampler2 = sampler1.withUniformRandomProvider(rng2); RandomAssert.assertProduceSameSequence(sampler1, sampler2); } } diff --git a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/InverseTransformContinuousSamplerTest.java b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/InverseTransformContinuousSamplerTest.java index 6ddbb07..99938cf 100644 --- a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/InverseTransformContinuousSamplerTest.java +++ b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/InverseTransformContinuousSamplerTest.java @@ -41,7 +41,7 @@ public class InverseTransformContinuousSamplerTest { final UniformRandomProvider rng2 = RandomSource.create(RandomSource.SPLIT_MIX_64, 0L); final InverseTransformContinuousSampler sampler1 = new InverseTransformContinuousSampler(rng1, function); - final InverseTransformContinuousSampler sampler2 = sampler1.withUniformRandomProvider(rng2); + final SharedStateContinuousSampler sampler2 = sampler1.withUniformRandomProvider(rng2); RandomAssert.assertProduceSameSequence(sampler1, sampler2); } } diff --git a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/InverseTransformDiscreteSamplerTest.java b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/InverseTransformDiscreteSamplerTest.java index b9d3f89..778ffe5 100644 --- a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/InverseTransformDiscreteSamplerTest.java +++ b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/InverseTransformDiscreteSamplerTest.java @@ -41,7 +41,7 @@ public class InverseTransformDiscreteSamplerTest { final UniformRandomProvider rng2 = RandomSource.create(RandomSource.SPLIT_MIX_64, 0L); final InverseTransformDiscreteSampler sampler1 = new InverseTransformDiscreteSampler(rng1, function); - final InverseTransformDiscreteSampler sampler2 = sampler1.withUniformRandomProvider(rng2); + final SharedStateDiscreteSampler sampler2 = sampler1.withUniformRandomProvider(rng2); RandomAssert.assertProduceSameSequence(sampler1, sampler2); } } diff --git a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/InverseTransformParetoSamplerTest.java b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/InverseTransformParetoSamplerTest.java index b4314c7..3837d1d 100644 --- a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/InverseTransformParetoSamplerTest.java +++ b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/InverseTransformParetoSamplerTest.java @@ -65,7 +65,7 @@ public class InverseTransformParetoSamplerTest { final double shape = 4.56; final InverseTransformParetoSampler sampler1 = new InverseTransformParetoSampler(rng1, scale, shape); - final InverseTransformParetoSampler sampler2 = sampler1.withUniformRandomProvider(rng2); + final SharedStateContinuousSampler sampler2 = sampler1.withUniformRandomProvider(rng2); RandomAssert.assertProduceSameSequence(sampler1, sampler2); } } diff --git a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/KempSmallMeanPoissonSamplerTest.java b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/KempSmallMeanPoissonSamplerTest.java index 04b8e7e..2796ff0 100644 --- a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/KempSmallMeanPoissonSamplerTest.java +++ b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/KempSmallMeanPoissonSamplerTest.java @@ -156,7 +156,7 @@ public class KempSmallMeanPoissonSamplerTest { final double mean = 1.23; final KempSmallMeanPoissonSampler sampler1 = new KempSmallMeanPoissonSampler(rng1, mean); - final KempSmallMeanPoissonSampler sampler2 = sampler1.withUniformRandomProvider(rng2); + final SharedStateDiscreteSampler sampler2 = sampler1.withUniformRandomProvider(rng2); RandomAssert.assertProduceSameSequence(sampler1, sampler2); } diff --git a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/LargeMeanPoissonSamplerTest.java b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/LargeMeanPoissonSamplerTest.java index 89022d1..9a8c674 100644 --- a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/LargeMeanPoissonSamplerTest.java +++ b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/LargeMeanPoissonSamplerTest.java @@ -171,7 +171,7 @@ public class LargeMeanPoissonSamplerTest { final UniformRandomProvider rng2 = RandomSource.create(RandomSource.SPLIT_MIX_64, 0L); final LargeMeanPoissonSampler sampler1 = new LargeMeanPoissonSampler(rng1, mean); - final LargeMeanPoissonSampler sampler2 = sampler1.withUniformRandomProvider(rng2); + final SharedStateDiscreteSampler sampler2 = sampler1.withUniformRandomProvider(rng2); RandomAssert.assertProduceSameSequence(sampler1, sampler2); } } diff --git a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/LogNormalSamplerTest.java b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/LogNormalSamplerTest.java index a8ec693..3da6447 100644 --- a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/LogNormalSamplerTest.java +++ b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/LogNormalSamplerTest.java @@ -69,7 +69,7 @@ public class LogNormalSamplerTest { final double shape = 4.56; final LogNormalSampler sampler1 = new LogNormalSampler(gauss, scale, shape); - final LogNormalSampler sampler2 = sampler1.withUniformRandomProvider(rng2); + final SharedStateContinuousSampler sampler2 = sampler1.withUniformRandomProvider(rng2); RandomAssert.assertProduceSameSequence(sampler1, sampler2); } diff --git a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/MarsagliaNormalisedGaussianSamplerTest.java b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/MarsagliaNormalisedGaussianSamplerTest.java index 89b7339..1155ce4 100644 --- a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/MarsagliaNormalisedGaussianSamplerTest.java +++ b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/MarsagliaNormalisedGaussianSamplerTest.java @@ -34,7 +34,7 @@ public class MarsagliaNormalisedGaussianSamplerTest { final UniformRandomProvider rng2 = RandomSource.create(RandomSource.SPLIT_MIX_64, 0L); final MarsagliaNormalizedGaussianSampler sampler1 = new MarsagliaNormalizedGaussianSampler(rng1); - final MarsagliaNormalizedGaussianSampler sampler2 = sampler1.withUniformRandomProvider(rng2); + final SharedStateContinuousSampler sampler2 = sampler1.withUniformRandomProvider(rng2); RandomAssert.assertProduceSameSequence(sampler1, sampler2); } } diff --git a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/MarsagliaTsangWangDiscreteSamplerTest.java b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/MarsagliaTsangWangDiscreteSamplerTest.java index 37164f7..5f2dd87 100644 --- a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/MarsagliaTsangWangDiscreteSamplerTest.java +++ b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/MarsagliaTsangWangDiscreteSamplerTest.java @@ -612,7 +612,7 @@ public class MarsagliaTsangWangDiscreteSamplerTest { double[] probabilities = createProbabilities(offset, prob); final MarsagliaTsangWangDiscreteSampler sampler1 = MarsagliaTsangWangDiscreteSampler.createDiscreteDistribution(rng1, probabilities); - final MarsagliaTsangWangDiscreteSampler sampler2 = sampler1.withUniformRandomProvider(rng2); + final SharedStateDiscreteSampler sampler2 = sampler1.withUniformRandomProvider(rng2); RandomAssert.assertProduceSameSequence(sampler1, sampler2); } @@ -645,7 +645,7 @@ public class MarsagliaTsangWangDiscreteSamplerTest { final UniformRandomProvider rng2 = RandomSource.create(RandomSource.SPLIT_MIX_64, 0L); final MarsagliaTsangWangDiscreteSampler sampler1 = MarsagliaTsangWangDiscreteSampler.createBinomialDistribution(rng1, trials, probabilityOfSuccess); - final MarsagliaTsangWangDiscreteSampler sampler2 = sampler1.withUniformRandomProvider(rng2); + final SharedStateDiscreteSampler sampler2 = sampler1.withUniformRandomProvider(rng2); RandomAssert.assertProduceSameSequence(sampler1, sampler2); } diff --git a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/PoissonSamplerTest.java b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/PoissonSamplerTest.java index 9899b61..362397d 100644 --- a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/PoissonSamplerTest.java +++ b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/PoissonSamplerTest.java @@ -52,7 +52,7 @@ public class PoissonSamplerTest { final UniformRandomProvider rng2 = RandomSource.create(RandomSource.SPLIT_MIX_64, 0L); final PoissonSampler sampler1 = new PoissonSampler(rng1, mean); - final PoissonSampler sampler2 = sampler1.withUniformRandomProvider(rng2); + final SharedStateDiscreteSampler sampler2 = sampler1.withUniformRandomProvider(rng2); RandomAssert.assertProduceSameSequence(sampler1, sampler2); } } diff --git a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/RejectionInversionZipfSamplerTest.java b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/RejectionInversionZipfSamplerTest.java index d7e3654..15621da 100644 --- a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/RejectionInversionZipfSamplerTest.java +++ b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/RejectionInversionZipfSamplerTest.java @@ -65,7 +65,7 @@ public class RejectionInversionZipfSamplerTest { final double exponent = 1.23; final RejectionInversionZipfSampler sampler1 = new RejectionInversionZipfSampler(rng1, numberOfElements, exponent); - final RejectionInversionZipfSampler sampler2 = sampler1.withUniformRandomProvider(rng2); + final SharedStateDiscreteSampler sampler2 = sampler1.withUniformRandomProvider(rng2); RandomAssert.assertProduceSameSequence(sampler1, sampler2); } } diff --git a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/SmallMeanPoissonSamplerTest.java b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/SmallMeanPoissonSamplerTest.java index 8d34fac..f21bf95 100644 --- a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/SmallMeanPoissonSamplerTest.java +++ b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/SmallMeanPoissonSamplerTest.java @@ -89,7 +89,7 @@ public class SmallMeanPoissonSamplerTest { final double mean = 1.23; final SmallMeanPoissonSampler sampler1 = new SmallMeanPoissonSampler(rng1, mean); - final SmallMeanPoissonSampler sampler2 = sampler1.withUniformRandomProvider(rng2); + final SharedStateDiscreteSampler sampler2 = sampler1.withUniformRandomProvider(rng2); RandomAssert.assertProduceSameSequence(sampler1, sampler2); } } diff --git a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/ZigguratNormalizedGaussianSamplerTest.java b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/ZigguratNormalizedGaussianSamplerTest.java index d4a2e16..1772de4 100644 --- a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/ZigguratNormalizedGaussianSamplerTest.java +++ b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/ZigguratNormalizedGaussianSamplerTest.java @@ -57,7 +57,7 @@ public class ZigguratNormalizedGaussianSamplerTest { final UniformRandomProvider rng2 = RandomSource.create(RandomSource.SPLIT_MIX_64, 0L); final ZigguratNormalizedGaussianSampler sampler1 = new ZigguratNormalizedGaussianSampler(rng1); - final ZigguratNormalizedGaussianSampler sampler2 = sampler1.withUniformRandomProvider(rng2); + final SharedStateContinuousSampler sampler2 = sampler1.withUniformRandomProvider(rng2); RandomAssert.assertProduceSameSequence(sampler1, sampler2); } }