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-statistics.git


The following commit(s) were added to refs/heads/master by this push:
     new aa7b93a  Updated the createSampler methods to use method references.
     new cbdb5d4  Merge pull request #9 from aherbert/method-refs-for-samplers
aa7b93a is described below

commit aa7b93a0eff339c59f9b674cdcbb4b0e405cb445
Author: aherbert <[email protected]>
AuthorDate: Fri May 17 18:00:33 2019 +0100

    Updated the createSampler methods to use method references.
---
 .../AbstractContinuousDistribution.java            | 31 +++-------------------
 .../distribution/AbstractDiscreteDistribution.java | 31 +++-------------------
 .../statistics/distribution/BetaDistribution.java  | 16 +++--------
 .../ConstantContinuousDistribution.java            |  8 +-----
 .../distribution/ExponentialDistribution.java      | 16 +++--------
 .../statistics/distribution/GammaDistribution.java | 17 +++---------
 .../distribution/LogNormalDistribution.java        | 17 +++---------
 .../distribution/NormalDistribution.java           | 17 ++++--------
 .../distribution/ParetoDistribution.java           | 16 +++--------
 .../distribution/PoissonDistribution.java          | 15 +++--------
 .../UniformContinuousDistribution.java             | 16 +++--------
 .../distribution/UniformDiscreteDistribution.java  | 16 +++--------
 .../statistics/distribution/ZipfDistribution.java  | 17 +++---------
 13 files changed, 44 insertions(+), 189 deletions(-)

diff --git 
a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/AbstractContinuousDistribution.java
 
b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/AbstractContinuousDistribution.java
index c760078..9826a69 100644
--- 
a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/AbstractContinuousDistribution.java
+++ 
b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/AbstractContinuousDistribution.java
@@ -20,7 +20,6 @@ import java.util.function.DoubleUnaryOperator;
 import org.apache.commons.numbers.core.Precision;
 import org.apache.commons.rng.UniformRandomProvider;
 import 
org.apache.commons.rng.sampling.distribution.InverseTransformContinuousSampler;
-import 
org.apache.commons.rng.sampling.distribution.ContinuousInverseCumulativeProbabilityFunction;
 import org.apache.commons.rng.sampling.distribution.ContinuousSampler;
 
 /**
@@ -176,32 +175,10 @@ abstract class AbstractContinuousDistribution
     /**{@inheritDoc} */
     @Override
     public ContinuousDistribution.Sampler createSampler(final 
UniformRandomProvider rng) {
-        return new ContinuousDistribution.Sampler() {
-            /**
-             * Inversion method distribution sampler.
-             */
-            private final ContinuousSampler sampler =
-                new InverseTransformContinuousSampler(rng, createICPF());
-
-            /** {@inheritDoc} */
-            @Override
-            public double sample() {
-                return sampler.sample();
-            }
-        };
-    }
-
-    /**
-     * @return an instance for use by {@link 
#createSampler(UniformRandomProvider)}
-     */
-    private ContinuousInverseCumulativeProbabilityFunction createICPF() {
-        return new ContinuousInverseCumulativeProbabilityFunction() {
-            /** {@inheritDoc} */
-            @Override
-            public double inverseCumulativeProbability(double p) {
-                return 
AbstractContinuousDistribution.this.inverseCumulativeProbability(p);
-            }
-        };
+        // Inversion method distribution sampler.
+        final ContinuousSampler sampler =
+            new InverseTransformContinuousSampler(rng, 
this::inverseCumulativeProbability);
+        return sampler::sample;
     }
 
     /**
diff --git 
a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/AbstractDiscreteDistribution.java
 
b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/AbstractDiscreteDistribution.java
index 0edbdea..4a69eb4 100644
--- 
a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/AbstractDiscreteDistribution.java
+++ 
b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/AbstractDiscreteDistribution.java
@@ -18,7 +18,6 @@ package org.apache.commons.statistics.distribution;
 
 import org.apache.commons.rng.UniformRandomProvider;
 import 
org.apache.commons.rng.sampling.distribution.InverseTransformDiscreteSampler;
-import 
org.apache.commons.rng.sampling.distribution.DiscreteInverseCumulativeProbabilityFunction;
 import org.apache.commons.rng.sampling.distribution.DiscreteSampler;
 
 /**
@@ -180,31 +179,9 @@ abstract class AbstractDiscreteDistribution
     /** {@inheritDoc} */
     @Override
     public DiscreteDistribution.Sampler createSampler(final 
UniformRandomProvider rng) {
-        return new DiscreteDistribution.Sampler() {
-            /**
-             * Inversion method distribution sampler.
-             */
-            private final DiscreteSampler sampler =
-                new InverseTransformDiscreteSampler(rng, createICPF());
-
-            /** {@inheritDoc} */
-            @Override
-            public int sample() {
-                return sampler.sample();
-            }
-        };
-    }
-
-    /**
-     * @return an instance for use by {@link 
#createSampler(UniformRandomProvider)}.
-     */
-    private DiscreteInverseCumulativeProbabilityFunction createICPF() {
-        return new DiscreteInverseCumulativeProbabilityFunction() {
-            /** {@inheritDoc} */
-            @Override
-            public int inverseCumulativeProbability(double p) {
-                return 
AbstractDiscreteDistribution.this.inverseCumulativeProbability(p);
-            }
-        };
+       // Inversion method distribution sampler.
+       final DiscreteSampler sampler =
+           new InverseTransformDiscreteSampler(rng, 
this::inverseCumulativeProbability);
+       return sampler::sample;
     }
 }
diff --git 
a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/BetaDistribution.java
 
b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/BetaDistribution.java
index 6a198e5..d71c16c 100644
--- 
a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/BetaDistribution.java
+++ 
b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/BetaDistribution.java
@@ -185,18 +185,8 @@ public class BetaDistribution extends 
AbstractContinuousDistribution {
      */
     @Override
     public ContinuousDistribution.Sampler createSampler(final 
UniformRandomProvider rng) {
-        return new ContinuousDistribution.Sampler() {
-            /**
-             * Beta distribution sampler.
-             */
-            private final ContinuousSampler sampler =
-                new ChengBetaSampler(rng, alpha, beta);
-
-            /**{@inheritDoc} */
-            @Override
-            public double sample() {
-                return sampler.sample();
-            }
-        };
+        // Beta distribution sampler.
+        final ContinuousSampler sampler = new ChengBetaSampler(rng, alpha, 
beta);
+        return sampler::sample;
     }
 }
diff --git 
a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ConstantContinuousDistribution.java
 
b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ConstantContinuousDistribution.java
index 592e19e..85c480d 100644
--- 
a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ConstantContinuousDistribution.java
+++ 
b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ConstantContinuousDistribution.java
@@ -105,12 +105,6 @@ public class ConstantContinuousDistribution extends 
AbstractContinuousDistributi
      */
     @Override
     public ContinuousDistribution.Sampler createSampler(final 
UniformRandomProvider rng) {
-        return new ContinuousDistribution.Sampler() {
-            /** {@inheritDoc} */
-            @Override
-            public double sample() {
-                return value;
-            }
-        };
+        return this::getSupportLowerBound;
     }
 }
diff --git 
a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ExponentialDistribution.java
 
b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ExponentialDistribution.java
index 9fdf5ea..be64dfa 100644
--- 
a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ExponentialDistribution.java
+++ 
b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ExponentialDistribution.java
@@ -166,18 +166,8 @@ public class ExponentialDistribution extends 
AbstractContinuousDistribution {
      */
     @Override
     public ContinuousDistribution.Sampler createSampler(final 
UniformRandomProvider rng) {
-        return new ContinuousDistribution.Sampler() {
-            /**
-             * Exponential distribution sampler.
-             */
-            private final ContinuousSampler sampler =
-                new AhrensDieterExponentialSampler(rng, mean);
-
-            /**{@inheritDoc} */
-            @Override
-            public double sample() {
-                return sampler.sample();
-            }
-        };
+        // Exponential distribution sampler.
+        final ContinuousSampler sampler = new 
AhrensDieterExponentialSampler(rng, mean);
+        return sampler::sample;
     }
 }
diff --git 
a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/GammaDistribution.java
 
b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/GammaDistribution.java
index 84d2f8a..b1992b3 100644
--- 
a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/GammaDistribution.java
+++ 
b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/GammaDistribution.java
@@ -337,18 +337,9 @@ public class GammaDistribution extends 
AbstractContinuousDistribution {
      */
     @Override
     public ContinuousDistribution.Sampler createSampler(final 
UniformRandomProvider rng) {
-        return new ContinuousDistribution.Sampler() {
-            /**
-             * Gamma distribution sampler.
-             */
-            private final ContinuousSampler sampler =
-                new AhrensDieterMarsagliaTsangGammaSampler(rng, scale, shape);
-
-            /**{@inheritDoc} */
-            @Override
-            public double sample() {
-                return sampler.sample();
-            }
-        };
+        // Gamma distribution sampler.
+        final ContinuousSampler sampler =
+            new AhrensDieterMarsagliaTsangGammaSampler(rng, scale, shape);
+        return sampler::sample;
     }
 }
diff --git 
a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/LogNormalDistribution.java
 
b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/LogNormalDistribution.java
index 935c421..e6bd521 100644
--- 
a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/LogNormalDistribution.java
+++ 
b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/LogNormalDistribution.java
@@ -238,18 +238,9 @@ public class LogNormalDistribution extends 
AbstractContinuousDistribution {
     /** {@inheritDoc} */
     @Override
     public ContinuousDistribution.Sampler createSampler(final 
UniformRandomProvider rng) {
-        return new ContinuousDistribution.Sampler() {
-            /**
-             * Log normal distribution sampler.
-             */
-            private final ContinuousSampler sampler =
-                new LogNormalSampler(new 
ZigguratNormalizedGaussianSampler(rng), scale, shape);
-
-            /**{@inheritDoc} */
-            @Override
-            public double sample() {
-                return sampler.sample();
-            }
-        };
+        // Log normal distribution sampler.
+        final ContinuousSampler sampler =
+            new LogNormalSampler(new ZigguratNormalizedGaussianSampler(rng), 
scale, shape);
+        return sampler::sample;
     }
 }
diff --git 
a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/NormalDistribution.java
 
b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/NormalDistribution.java
index 9d6293c..696fb57 100644
--- 
a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/NormalDistribution.java
+++ 
b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/NormalDistribution.java
@@ -179,17 +179,10 @@ public class NormalDistribution extends 
AbstractContinuousDistribution {
     /** {@inheritDoc} */
     @Override
     public ContinuousDistribution.Sampler createSampler(final 
UniformRandomProvider rng) {
-        return new ContinuousDistribution.Sampler() {
-            /** Gaussian distribution sampler. */
-            private final ContinuousSampler sampler =
-                new GaussianSampler(new ZigguratNormalizedGaussianSampler(rng),
-                                    mean, standardDeviation);
-
-            /** {@inheritDoc} */
-            @Override
-            public double sample() {
-                return sampler.sample();
-            }
-        };
+        // Gaussian distribution sampler.
+        final ContinuousSampler sampler =
+            new GaussianSampler(new ZigguratNormalizedGaussianSampler(rng),
+                                mean, standardDeviation);
+        return sampler::sample;
     }
 }
diff --git 
a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ParetoDistribution.java
 
b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ParetoDistribution.java
index f97b7f1..d1cc753 100644
--- 
a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ParetoDistribution.java
+++ 
b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ParetoDistribution.java
@@ -201,18 +201,8 @@ public class ParetoDistribution extends 
AbstractContinuousDistribution {
     /** {@inheritDoc} */
     @Override
     public ContinuousDistribution.Sampler createSampler(final 
UniformRandomProvider rng) {
-        return new ContinuousDistribution.Sampler() {
-            /**
-             * Pareto distribution sampler.
-             */
-            private final ContinuousSampler sampler =
-                new InverseTransformParetoSampler(rng, scale, shape);
-
-            /**{@inheritDoc} */
-            @Override
-            public double sample() {
-                return sampler.sample();
-            }
-        };
+        // Pareto distribution sampler.
+        final ContinuousSampler sampler = new 
InverseTransformParetoSampler(rng, scale, shape);
+        return sampler::sample;
     }
 }
diff --git 
a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/PoissonDistribution.java
 
b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/PoissonDistribution.java
index 545e2b4..756b3af 100644
--- 
a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/PoissonDistribution.java
+++ 
b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/PoissonDistribution.java
@@ -183,17 +183,8 @@ public class PoissonDistribution extends 
AbstractDiscreteDistribution {
     /**{@inheritDoc} */
     @Override
     public DiscreteDistribution.Sampler createSampler(final 
UniformRandomProvider rng) {
-        return new DiscreteDistribution.Sampler() {
-            /**
-             * Poisson distribution sampler.
-             */
-            private final DiscreteSampler sampler = new PoissonSampler(rng, 
mean);
-
-            /**{@inheritDoc} */
-            @Override
-            public int sample() {
-                return sampler.sample();
-            }
-        };
+        // Poisson distribution sampler.
+        final DiscreteSampler sampler = new PoissonSampler(rng, mean);
+        return sampler::sample;
     }
 }
diff --git 
a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/UniformContinuousDistribution.java
 
b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/UniformContinuousDistribution.java
index da5abf7..0d9c1cd 100644
--- 
a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/UniformContinuousDistribution.java
+++ 
b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/UniformContinuousDistribution.java
@@ -144,18 +144,8 @@ public class UniformContinuousDistribution extends 
AbstractContinuousDistributio
     /** {@inheritDoc} */
     @Override
     public ContinuousDistribution.Sampler createSampler(final 
UniformRandomProvider rng) {
-        return new ContinuousDistribution.Sampler() {
-            /**
-             * Uniform distribution sampler.
-             */
-            private final ContinuousSampler sampler =
-                new ContinuousUniformSampler(rng, lower, upper);
-
-            /**{@inheritDoc} */
-            @Override
-            public double sample() {
-                return sampler.sample();
-            }
-        };
+        // Uniform distribution sampler.
+        final ContinuousSampler sampler = new ContinuousUniformSampler(rng, 
lower, upper);
+        return sampler::sample;
     }
 }
diff --git 
a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/UniformDiscreteDistribution.java
 
b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/UniformDiscreteDistribution.java
index 47ffffb..7d39a2a 100644
--- 
a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/UniformDiscreteDistribution.java
+++ 
b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/UniformDiscreteDistribution.java
@@ -142,18 +142,8 @@ public class UniformDiscreteDistribution extends 
AbstractDiscreteDistribution {
     /**{@inheritDoc} */
     @Override
     public DiscreteDistribution.Sampler createSampler(final 
UniformRandomProvider rng) {
-        return new DiscreteDistribution.Sampler() {
-            /**
-             * Discrete uniform distribution sampler.
-             */
-            private final DiscreteSampler sampler =
-                new DiscreteUniformSampler(rng, lower, upper);
-
-            /**{@inheritDoc} */
-            @Override
-            public int sample() {
-                return sampler.sample();
-            }
-        };
+        // Discrete uniform distribution sampler.
+        final DiscreteSampler sampler = new DiscreteUniformSampler(rng, lower, 
upper);
+        return sampler::sample;
     }
 }
diff --git 
a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ZipfDistribution.java
 
b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ZipfDistribution.java
index 8d233fa..5b949c6 100644
--- 
a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ZipfDistribution.java
+++ 
b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ZipfDistribution.java
@@ -219,18 +219,9 @@ public class ZipfDistribution extends 
AbstractDiscreteDistribution {
     /**{@inheritDoc} */
     @Override
     public DiscreteDistribution.Sampler createSampler(final 
UniformRandomProvider rng) {
-        return new DiscreteDistribution.Sampler() {
-            /**
-             * Zipf distribution sampler.
-             */
-            private final DiscreteSampler sampler =
-                new RejectionInversionZipfSampler(rng, numberOfElements, 
exponent);
-
-            /**{@inheritDoc} */
-            @Override
-            public int sample() {
-                return sampler.sample();
-            }
-        };
+        // Zipf distribution sampler.
+        final DiscreteSampler sampler =
+            new RejectionInversionZipfSampler(rng, numberOfElements, exponent);
+        return sampler::sample;
     }
 }

Reply via email to