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