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 2022/12/02 15:10:16 UTC
[commons-math] 01/05: Use method reference to create a sampler
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-math.git
commit 6d767220edb7a5c821b37834250bfd4d9ce562b7
Author: aherbert <ah...@apache.org>
AuthorDate: Fri Dec 2 13:33:39 2022 +0000
Use method reference to create a sampler
---
.../distribution/AbstractIntegerDistribution.java | 30 ++--------------------
.../distribution/AbstractRealDistribution.java | 30 ++--------------------
2 files changed, 4 insertions(+), 56 deletions(-)
diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/distribution/AbstractIntegerDistribution.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/distribution/AbstractIntegerDistribution.java
index 15a7c5340..b18246022 100644
--- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/distribution/AbstractIntegerDistribution.java
+++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/distribution/AbstractIntegerDistribution.java
@@ -23,8 +23,6 @@ import org.apache.commons.math4.legacy.exception.OutOfRangeException;
import org.apache.commons.math4.legacy.exception.util.LocalizedFormats;
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;
import org.apache.commons.math4.core.jdkmath.JdkMath;
/**
@@ -194,31 +192,7 @@ public abstract class AbstractIntegerDistribution
/**{@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 AbstractIntegerDistribution.this.inverseCumulativeProbability(p);
- }
- };
+ // Inversion method distribution sampler.
+ return InverseTransformDiscreteSampler.of(rng, this::inverseCumulativeProbability)::sample;
}
}
diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/distribution/AbstractRealDistribution.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/distribution/AbstractRealDistribution.java
index 632d65461..30bfafb39 100644
--- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/distribution/AbstractRealDistribution.java
+++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/distribution/AbstractRealDistribution.java
@@ -24,8 +24,6 @@ import org.apache.commons.math4.legacy.exception.OutOfRangeException;
import org.apache.commons.math4.legacy.exception.util.LocalizedFormats;
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;
import org.apache.commons.math4.core.jdkmath.JdkMath;
/**
@@ -211,31 +209,7 @@ public abstract class AbstractRealDistribution
/**{@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 AbstractRealDistribution.this.inverseCumulativeProbability(p);
- }
- };
+ // Inversion method distribution sampler.
+ return InverseTransformContinuousSampler.of(rng, this::inverseCumulativeProbability)::sample;
}
}