You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ah...@apache.org on 2019/02/25 13:22:03 UTC

[commons-rng] 16/21: Merge branch 'improvement-RNG-71' of https://github.com/aherbert/commons-rng into aherbert-improvement-RNG-71

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 <ah...@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());
 +        }
 +    }
  }