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/07/31 21:47:21 UTC

[commons-rng] 03/08: RNG-110: Return the specialised delegate from withUniformRandomProvider.

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 376bd5aa516171c00a70ebd32d1ecbe8925ef1b8
Author: Alex Herbert <ah...@apache.org>
AuthorDate: Fri Jul 19 21:42:33 2019 +0100

    RNG-110: Return the specialised delegate from withUniformRandomProvider.
---
 .../AhrensDieterMarsagliaTsangGammaSampler.java            | 14 ++------------
 .../rng/sampling/distribution/DiscreteUniformSampler.java  | 14 ++------------
 .../rng/sampling/distribution/GeometricSampler.java        | 11 ++---------
 .../commons/rng/sampling/distribution/PoissonSampler.java  | 13 ++-----------
 4 files changed, 8 insertions(+), 44 deletions(-)

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 006581d..24aa406 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
@@ -282,17 +282,6 @@ public class AhrensDieterMarsagliaTsangGammaSampler
             new MarsagliaTsangGammaSampler(rng, alpha, theta);
     }
 
-    /**
-     * @param rng Generator of uniformly distributed random numbers.
-     * @param source Source to copy.
-     */
-    @SuppressWarnings("unchecked")
-    private AhrensDieterMarsagliaTsangGammaSampler(UniformRandomProvider rng,
-                                                   AhrensDieterMarsagliaTsangGammaSampler source) {
-        super(null);
-        delegate = source.delegate.withUniformRandomProvider(rng);
-    }
-
     /** {@inheritDoc} */
     @Override
     public double sample() {
@@ -308,6 +297,7 @@ public class AhrensDieterMarsagliaTsangGammaSampler
     /** {@inheritDoc} */
     @Override
     public SharedStateContinuousSampler withUniformRandomProvider(UniformRandomProvider rng) {
-        return new AhrensDieterMarsagliaTsangGammaSampler(rng, this);
+        // Direct return of the optimised sampler
+        return delegate.withUniformRandomProvider(rng);
     }
 }
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 bc1830c..b9f6fad 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
@@ -161,17 +161,6 @@ public class DiscreteUniformSampler
             new SmallRangeDiscreteUniformSampler(rng, lower, range);
     }
 
-    /**
-     * @param rng Generator of uniformly distributed random numbers.
-     * @param source Source to copy.
-     */
-    @SuppressWarnings("unchecked")
-    private DiscreteUniformSampler(UniformRandomProvider rng,
-                                   DiscreteUniformSampler source) {
-        super(null);
-        delegate = source.delegate.withUniformRandomProvider(rng);
-    }
-
     /** {@inheritDoc} */
     @Override
     public int sample() {
@@ -187,6 +176,7 @@ public class DiscreteUniformSampler
     /** {@inheritDoc} */
     @Override
     public SharedStateDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) {
-        return new DiscreteUniformSampler(rng, this);
+        // Direct return of the optimised sampler
+        return delegate.withUniformRandomProvider(rng);
     }
 }
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 a65a46e..25a4703 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
@@ -154,14 +154,6 @@ public class GeometricSampler implements SharedStateDiscreteSampler {
     }
 
     /**
-     * @param rng Generator of uniformly distributed random numbers
-     * @param source Source to copy.
-     */
-    private GeometricSampler(UniformRandomProvider rng, GeometricSampler source) {
-        delegate = source.delegate.withUniformRandomProvider(rng);
-    }
-
-    /**
      * Create a sample from a geometric distribution.
      *
      * <p>The sample will take the values in the set {@code [0, 1, 2, ...]}, equivalent to the
@@ -181,6 +173,7 @@ public class GeometricSampler implements SharedStateDiscreteSampler {
     /** {@inheritDoc} */
     @Override
     public SharedStateDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) {
-        return new GeometricSampler(rng, this);
+        // Direct return of the optimised sampler
+        return delegate.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 36cc04b..6834db9 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
@@ -79,16 +79,6 @@ public class PoissonSampler
             new LargeMeanPoissonSampler(rng, mean);
     }
 
-    /**
-     * @param rng Generator of uniformly distributed random numbers.
-     * @param source Source to copy.
-     */
-    private PoissonSampler(UniformRandomProvider rng,
-                           PoissonSampler source) {
-        super(null);
-        poissonSamplerDelegate = source.poissonSamplerDelegate.withUniformRandomProvider(rng);
-    }
-
     /** {@inheritDoc} */
     @Override
     public int sample() {
@@ -104,6 +94,7 @@ public class PoissonSampler
     /** {@inheritDoc} */
     @Override
     public SharedStateDiscreteSampler withUniformRandomProvider(UniformRandomProvider rng) {
-        return new PoissonSampler(rng, this);
+        // Direct return of the optimised sampler
+        return poissonSamplerDelegate.withUniformRandomProvider(rng);
     }
 }