Use a StableSampler for the Cauchy distribution
diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/CauchyDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/CauchyDistribution.java
index 9dd0d27..d189025 100644
--- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/CauchyDistribution.java
+++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/CauchyDistribution.java
@@ -16,6 +16,9 @@
*/
package org.apache.commons.statistics.distribution;
+import org.apache.commons.rng.UniformRandomProvider;
+import org.apache.commons.rng.sampling.distribution.StableSampler;
+
/**
* Implementation of the <a href="http://en.wikipedia.org/wiki/Cauchy_distribution">Cauchy distribution</a>.
*/
@@ -173,4 +176,12 @@
public boolean isSupportConnected() {
return true;
}
+
+ /** {@inheritDoc} */
+ @Override
+ public ContinuousDistribution.Sampler createSampler(final UniformRandomProvider rng) {
+ // Cauchy distribution =
+ // Stable distribution with alpha=1, beta=0, gamma=scale, delta=location (median)
+ return StableSampler.of(rng, 1, 0, getScale(), getMedian())::sample;
+ }
}