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 53a87e9573f1d3bda6e7e74fb990ec7752f6b6eb Merge: 5d4e8a5 634ec03 Author: aherbert <aherb...@apache.org> AuthorDate: Mon Feb 25 13:16:26 2019 +0000 Merge branch 'improvement-RNG-71' of https://github.com/aherbert/commons-rng into aherbert-improvement-RNG-71 .../AhrensDieterExponentialSampler.java | 4 ++ .../AhrensDieterMarsagliaTsangGammaSampler.java | 10 ++++ .../distribution/BoxMullerGaussianSampler.java | 5 ++ .../distribution/BoxMullerLogNormalSampler.java | 1 + .../sampling/distribution/ChengBetaSampler.java | 7 +++ .../rng/sampling/distribution/GaussianSampler.java | 5 ++ .../InverseTransformParetoSampler.java | 7 +++ .../distribution/LargeMeanPoissonSampler.java | 4 +- .../sampling/distribution/LogNormalSampler.java | 7 +++ .../distribution/SmallMeanPoissonSampler.java | 7 +-- .../AhrensDieterExponentialSamplerTest.java | 39 +++++++++++++++ ...AhrensDieterMarsagliaTsangGammaSamplerTest.java | 54 +++++++++++++++++++++ .../distribution/BoxMullerGaussianSamplerTest.java | 40 ++++++++++++++++ .../BoxMullerLogNormalSamplerTest.java | 54 +++++++++++++++++++++ .../distribution/ChengBetaSamplerTest.java | 54 +++++++++++++++++++++ .../distribution/ContinuousUniformSamplerTest.java | 51 ++++++++++++++++++++ .../distribution/DiscreteUniformSamplerTest.java | 38 +++++++++++++++ .../sampling/distribution/GaussianSamplerTest.java | 41 ++++++++++++++++ .../distribution/GeometricSamplerTest.java | 17 +++---- .../InverseTransformParetoSamplerTest.java | 54 +++++++++++++++++++++ .../distribution/LargeMeanPoissonSamplerTest.java | 10 ++-- .../distribution/LogNormalSamplerTest.java | 56 ++++++++++++++++++++++ .../RejectionInversionZipfSamplerTest.java | 54 +++++++++++++++++++++ .../distribution/SmallMeanPoissonSamplerTest.java | 12 ++--- 24 files changed, 607 insertions(+), 24 deletions(-) diff --cc commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/SmallMeanPoissonSamplerTest.java index 821645b,93ea94d..92a60fb --- 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 @@@ -34,10 -29,11 +30,11 @@@ public class SmallMeanPoissonSamplerTes */ @Test(expected=IllegalArgumentException.class) public void testConstructorThrowsWithMeanLargerThanUpperBound() { - final RestorableUniformRandomProvider rng = + final UniformRandomProvider rng = RandomSource.create(RandomSource.SPLIT_MIX_64); + final double mean = Integer.MAX_VALUE / 2 + 1; @SuppressWarnings("unused") - SmallMeanPoissonSampler sampler = new SmallMeanPoissonSampler(rng, Integer.MAX_VALUE / 2 + 1); + SmallMeanPoissonSampler sampler = new SmallMeanPoissonSampler(rng, mean); } /** @@@ -45,33 -41,10 +42,34 @@@ */ @Test(expected=IllegalArgumentException.class) public void testConstructorThrowsWithZeroMean() { - final RestorableUniformRandomProvider rng = + final UniformRandomProvider rng = RandomSource.create(RandomSource.SPLIT_MIX_64); + final double mean = 0; @SuppressWarnings("unused") - SmallMeanPoissonSampler sampler = new SmallMeanPoissonSampler(rng, 0); + SmallMeanPoissonSampler sampler = new SmallMeanPoissonSampler(rng, mean); } + + /** + * Test the sample is bounded to 1000 * mean. + */ + @Test + public void testSampleUpperBounds() { + // If the nextDouble() is always 1 then the sample will hit the upper bounds + final UniformRandomProvider rng = new UniformRandomProvider() { + public long nextLong(long n) { return 0; } + public long nextLong() { return 0; } + public int nextInt(int n) { return 0; } + public int nextInt() { return 0; } + public float nextFloat() { return 0; } + public double nextDouble() { return 1;} + public void nextBytes(byte[] bytes, int start, int len) {} + public void nextBytes(byte[] bytes) {} + public boolean nextBoolean() { return false; } + }; + for (double mean : new double[] { 0.5, 1, 1.5, 2.2 }) { + final SmallMeanPoissonSampler sampler = new SmallMeanPoissonSampler(rng, mean); + final int expected = (int) Math.ceil(1000 * mean); + Assert.assertEquals(expected, sampler.sample()); + } + } }