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/10/03 11:10:47 UTC

[commons-statistics] 02/05: Update ZipfDistribution to always use RejectionInversionZipfSampler

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

commit 5b67ad1dd7ac2c4e1b704fda3a92ad7a4bccc51b
Author: aherbert <ah...@apache.org>
AuthorDate: Mon Oct 3 11:54:54 2022 +0100

    Update ZipfDistribution to always use RejectionInversionZipfSampler
    
    The RejectionInversionZipfSampler was modified in release 1.5 to allow
    an exponent of 0.
    
    Change fixed seed for ZipfDistributionTest. Seed expansion from
    primitive seeds has changed in RNG 1.5.
---
 .../apache/commons/statistics/distribution/ZipfDistribution.java | 9 ++-------
 .../commons/statistics/distribution/ZipfDistributionTest.java    | 2 +-
 2 files changed, 3 insertions(+), 8 deletions(-)

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 b9933d5..82bbdde 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
@@ -18,7 +18,6 @@
 package org.apache.commons.statistics.distribution;
 
 import org.apache.commons.rng.UniformRandomProvider;
-import org.apache.commons.rng.sampling.distribution.DiscreteUniformSampler;
 import org.apache.commons.rng.sampling.distribution.RejectionInversionZipfSampler;
 
 /**
@@ -269,11 +268,7 @@ public final class ZipfDistribution extends AbstractDiscreteDistribution {
     /** {@inheritDoc} */
     @Override
     public DiscreteDistribution.Sampler createSampler(final UniformRandomProvider rng) {
-        if (exponent > 0) {
-            // Zipf distribution sampler.
-            return RejectionInversionZipfSampler.of(rng, numberOfElements, exponent)::sample;
-        }
-        // Special case when exponent is zero then the sample is uniform
-        return DiscreteUniformSampler.of(rng, 1, numberOfElements)::sample;
+        // Zipf distribution sampler.
+        return RejectionInversionZipfSampler.of(rng, numberOfElements, exponent)::sample;
     }
 }
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ZipfDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ZipfDistributionTest.java
index 640e7ed..e3675f8 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ZipfDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ZipfDistributionTest.java
@@ -114,7 +114,7 @@ class ZipfDistributionTest  extends BaseDiscreteDistributionTest {
                 // that all test cases do not fail is 0.999^(32*22) = 0.49442874426
                 final DiscreteDistribution.Sampler distribution =
                     ZipfDistribution.of(numPoints, exponent).createSampler(
-                        RandomSource.XO_SHI_RO_256_PP.create(6));
+                        RandomSource.XO_SHI_RO_256_PP.create(1));
 
                 final double[] expectedCounts = new double[numPoints];
                 final long[] observedCounts = new long[numPoints];