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 62cdc6b..ee8fb3d 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
@@ -154,23 +154,6 @@
         return x;
     }
 
-    /**
-     * Utility function for allocating an array and filling it with {@code n}
-     * samples generated by the given {@code sampler}.
-     *
-     * @param n Number of samples.
-     * @param sampler Sampler.
-     * @return an array of size {@code n}.
-     */
-    public static double[] sample(int n,
-                                  ContinuousDistribution.Sampler sampler) {
-        final double[] samples = new double[n];
-        for (int i = 0; i < n; i++) {
-            samples[i] = sampler.sample();
-        }
-        return samples;
-    }
-
     /**{@inheritDoc} */
     @Override
     public ContinuousDistribution.Sampler createSampler(final UniformRandomProvider rng) {
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 67ca871..8779a34 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
@@ -160,23 +160,6 @@
         return result;
     }
 
-    /**
-     * Utility function for allocating an array and filling it with {@code n}
-     * samples generated by the given {@code sampler}.
-     *
-     * @param n Number of samples.
-     * @param sampler Sampler.
-     * @return an array of size {@code n}.
-     */
-    public static int[] sample(int n,
-                               DiscreteDistribution.Sampler sampler) {
-        final int[] samples = new int[n];
-        for (int i = 0; i < n; i++) {
-            samples[i] = sampler.sample();
-        }
-        return samples;
-    }
-
     /** {@inheritDoc} */
     @Override
     public DiscreteDistribution.Sampler createSampler(final UniformRandomProvider rng) {
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/BetaDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/BetaDistributionTest.java
index 6407324..336b61c 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/BetaDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/BetaDistributionTest.java
@@ -450,7 +450,7 @@
         for (final double alpha : ALPHA_BETAS) {
             for (final double beta : ALPHA_BETAS) {
                 final BetaDistribution betaDistribution = new BetaDistribution(alpha, beta);
-                final double[] observed = AbstractContinuousDistribution.sample(numSamples,
+                final double[] observed = TestUtils.sample(numSamples,
                         betaDistribution.createSampler(rng));
                 Arrays.sort(observed);
 
@@ -474,7 +474,7 @@
                 final BetaDistribution betaDistribution = new BetaDistribution(alpha, beta);
 
                 final ContinuousDistribution.Sampler sampler = betaDistribution.createSampler(rng);
-                final double[] observed = AbstractContinuousDistribution.sample(numSamples, sampler);
+                final double[] observed = TestUtils.sample(numSamples, sampler);
 
                 final double gT = gTest(betaDistribution, observed);
                 Assertions.assertFalse(gT < level,
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ContinuousDistributionAbstractTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ContinuousDistributionAbstractTest.java
index 2b285ee..6c5efff 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ContinuousDistributionAbstractTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ContinuousDistributionAbstractTest.java
@@ -473,7 +473,7 @@
         final int sampleSize = 1000;
         final ContinuousDistribution.Sampler sampler =
             distribution.createSampler(RandomSource.create(RandomSource.WELL_19937_C, 123456789L));
-        final double[] sample = AbstractContinuousDistribution.sample(sampleSize, sampler);
+        final double[] sample = TestUtils.sample(sampleSize, sampler);
         final double[] quartiles = TestUtils.getDistributionQuartiles(distribution);
         final double[] expected = {250, 250, 250, 250};
         final long[] counts = new long[4];
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/DiscreteDistributionAbstractTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/DiscreteDistributionAbstractTest.java
index a50a521..521dcf5 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/DiscreteDistributionAbstractTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/DiscreteDistributionAbstractTest.java
@@ -286,7 +286,7 @@
         // Use fixed seed.
         final DiscreteDistribution.Sampler sampler =
             dist.createSampler(RandomSource.create(RandomSource.WELL_512_A, 1000));
-        final int[] sample = AbstractDiscreteDistribution.sample(sampleSize, sampler);
+        final int[] sample = TestUtils.sample(sampleSize, sampler);
         for (int i = 0; i < sampleSize; i++) {
             for (int j = 0; j < length; j++) {
                 if (sample[i] == densityPoints[j]) {
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/TestUtils.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/TestUtils.java
index df770ee..19920e8 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/TestUtils.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/TestUtils.java
@@ -270,4 +270,38 @@
         }
         return positiveMassCount;
     }
+
+    /**
+     * Utility function for allocating an array and filling it with {@code n}
+     * samples generated by the given {@code sampler}.
+     *
+     * @param n Number of samples.b
+     * @param sampler Sampler.
+     * @return an array of size {@code n}.
+     */
+    public static double[] sample(int n,
+                                  ContinuousDistribution.Sampler sampler) {
+        final double[] samples = new double[n];
+        for (int i = 0; i < n; i++) {
+            samples[i] = sampler.sample();
+        }
+        return samples;
+    }
+
+    /**
+     * Utility function for allocating an array and filling it with {@code n}
+     * samples generated by the given {@code sampler}.
+     *
+     * @param n Number of samples.
+     * @param sampler Sampler.
+     * @return an array of size {@code n}.
+     */
+    public static int[] sample(int n,
+                               DiscreteDistribution.Sampler sampler) {
+        final int[] samples = new int[n];
+        for (int i = 0; i < n; i++) {
+            samples[i] = sampler.sample();
+        }
+        return samples;
+    }
 }
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 46af645..28f3090 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
@@ -152,7 +152,7 @@
                 for (int i = 0; i < numPoints; i++) {
                     expectedCounts[i] = sampleSize * (weights[i] / weightSum);
                 }
-                final int[] sample = AbstractDiscreteDistribution.sample(sampleSize, distribution);
+                final int[] sample = TestUtils.sample(sampleSize, distribution);
                 for (final int s : sample) {
                     observedCounts[s - 1]++;
                 }
