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

commit e309e825f7de290928ef321915c7d083977f73de
Author: aherbert <[email protected]>
AuthorDate: Tue Sep 27 10:47:36 2022 +0100

    Use randomly chosen high-quality RNG for the sampling tests
    
    RNGs are chosen from those that pass TestU01 BigCrush and PractRand to 4
    TiB of output.
---
 .../rng/sampling/CollectionSamplerTest.java        |   2 +-
 .../rng/sampling/CombinationSamplerTest.java       |   2 +-
 .../DiscreteProbabilityCollectionSamplerTest.java  |   2 +-
 .../commons/rng/sampling/ObjectSamplerTest.java    |   2 +-
 .../rng/sampling/PermutationSamplerTest.java       |   2 +-
 .../apache/commons/rng/sampling/RandomAssert.java  |  56 ++++++++++-
 .../AliasMethodDiscreteSamplerTest.java            |   4 +-
 .../distribution/ContinuousSamplerTest.java        |   3 +-
 .../distribution/ContinuousSamplersList.java       | 108 ++++++++++-----------
 .../distribution/ContinuousUniformSamplerTest.java |   2 +-
 .../distribution/DirichletSamplerTest.java         |   2 +-
 .../sampling/distribution/DiscreteSamplerTest.java |   3 +-
 .../distribution/DiscreteSamplersList.java         |  66 ++++++-------
 .../distribution/DiscreteUniformSamplerTest.java   |   2 +-
 .../FastLoadedDiceRollerDiscreteSamplerTest.java   |   6 +-
 .../GuideTableDiscreteSamplerTest.java             |   4 +-
 .../rng/sampling/distribution/LongSamplerTest.java |   3 +-
 .../MarsagliaTsangWangDiscreteSamplerTest.java     |   2 +-
 .../sampling/distribution/StableSamplerTest.java   |   4 +-
 .../distribution/UniformLongSamplerTest.java       |   2 +-
 .../rng/sampling/shape/TriangleSamplerTest.java    |   2 +-
 21 files changed, 168 insertions(+), 111 deletions(-)

diff --git 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/CollectionSamplerTest.java
 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/CollectionSamplerTest.java
index 3853cccf..1dbd7ca9 100644
--- 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/CollectionSamplerTest.java
+++ 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/CollectionSamplerTest.java
@@ -39,7 +39,7 @@ class CollectionSamplerTest {
         list.add("RNG");
 
         final CollectionSampler<String> sampler =
-            new CollectionSampler<>(RandomSource.MWC_256.create(), list);
+            new CollectionSampler<>(RandomAssert.createRNG(), list);
         final String word = sampler.sample();
         for (final String w : list) {
             if (word.equals(w)) {
diff --git 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/CombinationSamplerTest.java
 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/CombinationSamplerTest.java
index 237cdc9d..58826319 100644
--- 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/CombinationSamplerTest.java
+++ 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/CombinationSamplerTest.java
@@ -30,7 +30,7 @@ import org.apache.commons.rng.simple.RandomSource;
  * Tests for {@link CombinationSampler}.
  */
 class CombinationSamplerTest {
-    private final UniformRandomProvider rng = 
RandomSource.XO_RO_SHI_RO_128_PP.create();
+    private final UniformRandomProvider rng = RandomAssert.createRNG();
 
     @Test
     void testSampleIsInDomain() {
diff --git 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/DiscreteProbabilityCollectionSamplerTest.java
 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/DiscreteProbabilityCollectionSamplerTest.java
index f41d7b32..c1b2c578 100644
--- 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/DiscreteProbabilityCollectionSamplerTest.java
+++ 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/DiscreteProbabilityCollectionSamplerTest.java
@@ -33,7 +33,7 @@ import org.apache.commons.rng.simple.RandomSource;
  */
 class DiscreteProbabilityCollectionSamplerTest {
     /** RNG. */
-    private final UniformRandomProvider rng = 
RandomSource.XO_SHI_RO_128_PP.create();
+    private final UniformRandomProvider rng = RandomAssert.createRNG();
 
     @Test
     void testPrecondition1() {
diff --git 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/ObjectSamplerTest.java
 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/ObjectSamplerTest.java
index 7fc14662..9c50a324 100644
--- 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/ObjectSamplerTest.java
+++ 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/ObjectSamplerTest.java
@@ -30,7 +30,7 @@ import org.junit.jupiter.params.provider.ValueSource;
 class ObjectSamplerTest {
     @Test
     void testSamplesUnlimitedSize() {
-        final ObjectSampler<Double> s = 
RandomSource.SPLIT_MIX_64.create()::nextDouble;
+        final ObjectSampler<Double> s = RandomAssert.createRNG()::nextDouble;
         Assertions.assertEquals(Long.MAX_VALUE, 
s.samples().spliterator().estimateSize());
     }
 
diff --git 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/PermutationSamplerTest.java
 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/PermutationSamplerTest.java
index e632974b..0987ab90 100644
--- 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/PermutationSamplerTest.java
+++ 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/PermutationSamplerTest.java
@@ -37,7 +37,7 @@ class PermutationSamplerTest {
     void testSampleTrivial() {
         final int n = 6;
         final int k = 3;
-        final PermutationSampler sampler = new 
PermutationSampler(RandomSource.KISS.create(),
+        final PermutationSampler sampler = new 
PermutationSampler(RandomAssert.createRNG(),
                                                                   n, k);
         final int[] random = sampler.sample();
         SAMPLE: for (final int s : random) {
diff --git 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/RandomAssert.java
 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/RandomAssert.java
index 0ea4a6de..c63ea9c8 100644
--- 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/RandomAssert.java
+++ 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/RandomAssert.java
@@ -18,10 +18,13 @@
 package org.apache.commons.rng.sampling;
 
 import org.junit.jupiter.api.Assertions;
-
+import java.util.EnumSet;
+import java.util.concurrent.ThreadLocalRandom;
+import org.apache.commons.rng.UniformRandomProvider;
 import org.apache.commons.rng.sampling.distribution.ContinuousSampler;
 import org.apache.commons.rng.sampling.distribution.DiscreteSampler;
 import org.apache.commons.rng.sampling.distribution.LongSampler;
+import org.apache.commons.rng.simple.RandomSource;
 
 /**
  * Utility class for testing random samplers.
@@ -30,6 +33,37 @@ public final class RandomAssert {
     /** Number of samples to generate to test for equal sequences. */
     private static final int SAMPLES = 10;
 
+    /** The sources for a new random generator instance. */
+    private static final RandomSource[] SOURCES;
+
+    static {
+        final EnumSet<RandomSource> set = EnumSet.allOf(RandomSource.class);
+        // Remove all generators that do not pass Test U01 BigCrush or
+        // fail PractRand before 4 TiB of output.
+        // See: 
https://commons.apache.org/proper/commons-rng/userguide/rng.html#a5._Quality
+        set.remove(RandomSource.JDK);
+        set.remove(RandomSource.WELL_512_A);
+        set.remove(RandomSource.WELL_1024_A);
+        set.remove(RandomSource.WELL_19937_A);
+        set.remove(RandomSource.WELL_19937_C);
+        set.remove(RandomSource.WELL_44497_A);
+        set.remove(RandomSource.WELL_44497_B);
+        set.remove(RandomSource.MT);
+        set.remove(RandomSource.XOR_SHIFT_1024_S);
+        set.remove(RandomSource.TWO_CMRES);
+        set.remove(RandomSource.TWO_CMRES_SELECT);
+        set.remove(RandomSource.MT_64);
+        set.remove(RandomSource.XOR_SHIFT_1024_S_PHI);
+        set.remove(RandomSource.XO_RO_SHI_RO_64_S);
+        set.remove(RandomSource.XO_SHI_RO_128_PLUS);
+        set.remove(RandomSource.XO_RO_SHI_RO_128_PLUS);
+        set.remove(RandomSource.XO_SHI_RO_256_PLUS);
+        set.remove(RandomSource.XO_SHI_RO_512_PLUS);
+        set.remove(RandomSource.PCG_MCG_XSH_RS_32);
+        set.remove(RandomSource.XO_RO_SHI_RO_1024_S);
+        SOURCES = set.toArray(new RandomSource[0]);
+    }
+
     /**
      * Class contains only static methods.
      */
@@ -115,4 +149,24 @@ public final class RandomAssert {
     private static boolean isArray(Object object) {
         return object != null && object.getClass().isArray();
     }
+
+    /**
+     * Create a new random generator instance. The implementation will be 
randomly chosen
+     * from a selection of high-quality generators.
+     *
+     * <p>This is a helper method to return a generator for use in testing 
where the
+     * underlying source should not impact the test. This ensures the test is 
robust upon
+     * repeat invocation across different JVM instances where the generator 
will most
+     * likely be different.
+     *
+     * <p>Note that use of this method is preferable to use of a fixed seed 
generator. Any
+     * test that is flaky when using this method may require an update to the 
test
+     * assumptions and assertions.
+     *
+     * @return the uniform random provider
+     * @see RandomSource#create()
+     */
+    public static UniformRandomProvider createRNG() {
+        return 
SOURCES[ThreadLocalRandom.current().nextInt(SOURCES.length)].create();
+    }
 }
diff --git 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/AliasMethodDiscreteSamplerTest.java
 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/AliasMethodDiscreteSamplerTest.java
index efc127b2..86f8553a 100644
--- 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/AliasMethodDiscreteSamplerTest.java
+++ 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/AliasMethodDiscreteSamplerTest.java
@@ -83,7 +83,7 @@ class AliasMethodDiscreteSamplerTest {
      * @return the alias method discrete sampler
      */
     private static SharedStateDiscreteSampler createSampler(double[] 
probabilities) {
-        final UniformRandomProvider rng = RandomSource.SPLIT_MIX_64.create();
+        final UniformRandomProvider rng = RandomAssert.createRNG();
         return AliasMethodDiscreteSampler.of(rng, probabilities, -1);
     }
 
@@ -134,7 +134,7 @@ class AliasMethodDiscreteSamplerTest {
     @Test
     void testNonUniformSamplesWithProbabilitiesWithDefaultFactoryConstructor() 
{
         final double[] expected = {0.1, 0.2, 0.3, 0.1, 0.3};
-        
checkSamples(AliasMethodDiscreteSampler.of(RandomSource.SPLIT_MIX_64.create(), 
expected), expected);
+        checkSamples(AliasMethodDiscreteSampler.of(RandomAssert.createRNG(), 
expected), expected);
     }
 
     /**
diff --git 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/ContinuousSamplerTest.java
 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/ContinuousSamplerTest.java
index 0222abfb..16e6d964 100644
--- 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/ContinuousSamplerTest.java
+++ 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/ContinuousSamplerTest.java
@@ -17,6 +17,7 @@
 package org.apache.commons.rng.sampling.distribution;
 
 import java.util.concurrent.ThreadLocalRandom;
+import org.apache.commons.rng.sampling.RandomAssert;
 import org.apache.commons.rng.simple.RandomSource;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.RepeatedTest;
@@ -30,7 +31,7 @@ import org.junit.jupiter.params.provider.ValueSource;
 class ContinuousSamplerTest {
     @Test
     void testSamplesUnlimitedSize() {
-        final ContinuousSampler s = 
RandomSource.SPLIT_MIX_64.create()::nextDouble;
+        final ContinuousSampler s = RandomAssert.createRNG()::nextDouble;
         Assertions.assertEquals(Long.MAX_VALUE, 
s.samples().spliterator().estimateSize());
     }
 
diff --git 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/ContinuousSamplersList.java
 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/ContinuousSamplersList.java
index b93cbcce..ac363592 100644
--- 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/ContinuousSamplersList.java
+++ 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/ContinuousSamplersList.java
@@ -21,7 +21,7 @@ import java.util.ArrayList;
 import java.util.Collections;
 
 import org.apache.commons.rng.UniformRandomProvider;
-import org.apache.commons.rng.simple.RandomSource;
+import org.apache.commons.rng.sampling.RandomAssert;
 
 /**
  * List of samplers.
@@ -45,179 +45,179 @@ public final class ContinuousSamplersList {
             final double meanNormal = -123.45;
             final double sigmaNormal = 6.789;
             add(LIST, new 
org.apache.commons.math3.distribution.NormalDistribution(unusedRng, meanNormal, 
sigmaNormal),
-                RandomSource.KISS.create());
+                RandomAssert.createRNG());
             // Gaussian (DEPRECATED "Box-Muller").
             add(LIST, new 
org.apache.commons.math3.distribution.NormalDistribution(unusedRng, meanNormal, 
sigmaNormal),
-                new BoxMullerGaussianSampler(RandomSource.MT.create(), 
meanNormal, sigmaNormal));
+                new BoxMullerGaussianSampler(RandomAssert.createRNG(), 
meanNormal, sigmaNormal));
             // Gaussian ("Box-Muller").
             add(LIST, new 
org.apache.commons.math3.distribution.NormalDistribution(unusedRng, meanNormal, 
sigmaNormal),
-                GaussianSampler.of(new 
BoxMullerNormalizedGaussianSampler(RandomSource.MT.create()),
+                GaussianSampler.of(new 
BoxMullerNormalizedGaussianSampler(RandomAssert.createRNG()),
                                    meanNormal, sigmaNormal));
             // Gaussian ("Marsaglia").
             add(LIST, new 
org.apache.commons.math3.distribution.NormalDistribution(unusedRng, meanNormal, 
sigmaNormal),
-                GaussianSampler.of(new 
MarsagliaNormalizedGaussianSampler(RandomSource.MT.create()),
+                GaussianSampler.of(new 
MarsagliaNormalizedGaussianSampler(RandomAssert.createRNG()),
                                    meanNormal, sigmaNormal));
             // Gaussian ("Ziggurat").
             add(LIST, new 
org.apache.commons.math3.distribution.NormalDistribution(unusedRng, meanNormal, 
sigmaNormal),
-                GaussianSampler.of(new 
ZigguratNormalizedGaussianSampler(RandomSource.MT.create()),
+                GaussianSampler.of(new 
ZigguratNormalizedGaussianSampler(RandomAssert.createRNG()),
                                    meanNormal, sigmaNormal));
             // Gaussian ("Modified ziggurat").
             add(LIST, new 
org.apache.commons.math3.distribution.NormalDistribution(unusedRng, meanNormal, 
sigmaNormal),
-                
GaussianSampler.of(ZigguratSampler.NormalizedGaussian.of(RandomSource.MT.create()),
+                
GaussianSampler.of(ZigguratSampler.NormalizedGaussian.of(RandomAssert.createRNG()),
                                    meanNormal, sigmaNormal));
 
             // Beta ("inverse method").
             final double alphaBeta = 4.3;
             final double betaBeta = 2.1;
             add(LIST, new 
org.apache.commons.math3.distribution.BetaDistribution(unusedRng, alphaBeta, 
betaBeta),
-                RandomSource.ISAAC.create());
+                RandomAssert.createRNG());
             // Beta ("Cheng").
             add(LIST, new 
org.apache.commons.math3.distribution.BetaDistribution(unusedRng, alphaBeta, 
betaBeta),
-                ChengBetaSampler.of(RandomSource.MWC_256.create(), alphaBeta, 
betaBeta));
+                ChengBetaSampler.of(RandomAssert.createRNG(), alphaBeta, 
betaBeta));
             add(LIST, new 
org.apache.commons.math3.distribution.BetaDistribution(unusedRng, betaBeta, 
alphaBeta),
-                ChengBetaSampler.of(RandomSource.WELL_19937_A.create(), 
betaBeta, alphaBeta));
+                ChengBetaSampler.of(RandomAssert.createRNG(), betaBeta, 
alphaBeta));
             // Beta ("Cheng", alternate algorithm).
             final double alphaBetaAlt = 0.5678;
             final double betaBetaAlt = 0.1234;
             add(LIST, new 
org.apache.commons.math3.distribution.BetaDistribution(unusedRng, alphaBetaAlt, 
betaBetaAlt),
-                ChengBetaSampler.of(RandomSource.WELL_512_A.create(), 
alphaBetaAlt, betaBetaAlt));
+                ChengBetaSampler.of(RandomAssert.createRNG(), alphaBetaAlt, 
betaBetaAlt));
             add(LIST, new 
org.apache.commons.math3.distribution.BetaDistribution(unusedRng, betaBetaAlt, 
alphaBetaAlt),
-                ChengBetaSampler.of(RandomSource.WELL_19937_C.create(), 
betaBetaAlt, alphaBetaAlt));
+                ChengBetaSampler.of(RandomAssert.createRNG(), betaBetaAlt, 
alphaBetaAlt));
 
             // Cauchy ("inverse method").
             final double medianCauchy = 0.123;
             final double scaleCauchy = 4.5;
             add(LIST, new 
org.apache.commons.math3.distribution.CauchyDistribution(unusedRng, 
medianCauchy, scaleCauchy),
-                RandomSource.WELL_19937_C.create());
+                RandomAssert.createRNG());
 
             // Chi-square ("inverse method").
             final int dofChi2 = 12;
             add(LIST, new 
org.apache.commons.math3.distribution.ChiSquaredDistribution(unusedRng, 
dofChi2),
-                RandomSource.WELL_19937_A.create());
+                RandomAssert.createRNG());
 
             // Exponential ("inverse method").
             final double meanExp = 3.45;
             add(LIST, new 
org.apache.commons.math3.distribution.ExponentialDistribution(unusedRng, 
meanExp),
-                RandomSource.WELL_44497_A.create());
+                RandomAssert.createRNG());
             // Exponential.
             add(LIST, new 
org.apache.commons.math3.distribution.ExponentialDistribution(unusedRng, 
meanExp),
-                AhrensDieterExponentialSampler.of(RandomSource.MT.create(), 
meanExp));
+                AhrensDieterExponentialSampler.of(RandomAssert.createRNG(), 
meanExp));
             // Exponential ("Modified ziggurat").
             add(LIST, new 
org.apache.commons.math3.distribution.ExponentialDistribution(unusedRng, 
meanExp),
-                
ZigguratSampler.Exponential.of(RandomSource.XO_RO_SHI_RO_128_SS.create(), 
meanExp));
+                ZigguratSampler.Exponential.of(RandomAssert.createRNG(), 
meanExp));
 
             // F ("inverse method").
             final int numDofF = 4;
             final int denomDofF = 7;
             add(LIST, new 
org.apache.commons.math3.distribution.FDistribution(unusedRng, numDofF, 
denomDofF),
-                RandomSource.MT_64.create());
+                RandomAssert.createRNG());
 
             // Gamma ("inverse method").
             final double alphaGammaSmallerThanOne = 0.1234;
             final double alphaGammaLargerThanOne = 2.345;
             final double thetaGamma = 3.456;
             add(LIST, new 
org.apache.commons.math3.distribution.GammaDistribution(unusedRng, 
alphaGammaLargerThanOne, thetaGamma),
-                RandomSource.SPLIT_MIX_64.create());
+                RandomAssert.createRNG());
             // Gamma (alpha < 1).
             add(LIST, new 
org.apache.commons.math3.distribution.GammaDistribution(unusedRng, 
alphaGammaSmallerThanOne, thetaGamma),
-                
AhrensDieterMarsagliaTsangGammaSampler.of(RandomSource.XOR_SHIFT_1024_S_PHI.create(),
+                
AhrensDieterMarsagliaTsangGammaSampler.of(RandomAssert.createRNG(),
                                                           
alphaGammaSmallerThanOne, thetaGamma));
             // Gamma (alpha > 1).
             add(LIST, new 
org.apache.commons.math3.distribution.GammaDistribution(unusedRng, 
alphaGammaLargerThanOne, thetaGamma),
-                
AhrensDieterMarsagliaTsangGammaSampler.of(RandomSource.WELL_44497_B.create(),
+                
AhrensDieterMarsagliaTsangGammaSampler.of(RandomAssert.createRNG(),
                                                           
alphaGammaLargerThanOne, thetaGamma));
 
             // Gumbel ("inverse method").
             final double muGumbel = -4.56;
             final double betaGumbel = 0.123;
             add(LIST, new 
org.apache.commons.math3.distribution.GumbelDistribution(unusedRng, muGumbel, 
betaGumbel),
-                RandomSource.WELL_1024_A.create());
+                RandomAssert.createRNG());
 
             // Laplace ("inverse method").
             final double muLaplace = 12.3;
             final double betaLaplace = 5.6;
             add(LIST, new 
org.apache.commons.math3.distribution.LaplaceDistribution(unusedRng, muLaplace, 
betaLaplace),
-                RandomSource.MWC_256.create());
+                RandomAssert.createRNG());
 
             // Levy ("inverse method").
             final double muLevy = -1.098;
             final double cLevy = 0.76;
             add(LIST, new 
org.apache.commons.math3.distribution.LevyDistribution(unusedRng, muLevy, 
cLevy),
-                RandomSource.TWO_CMRES.create());
+                RandomAssert.createRNG());
             // Levy sampler
             add(LIST, new 
org.apache.commons.math3.distribution.LevyDistribution(unusedRng, muLevy, 
cLevy),
-                LevySampler.of(RandomSource.JSF_64.create(), muLevy, cLevy));
+                LevySampler.of(RandomAssert.createRNG(), muLevy, cLevy));
             add(LIST, new 
org.apache.commons.math3.distribution.LevyDistribution(unusedRng, 0.0, 1.0),
-                LevySampler.of(RandomSource.JSF_64.create(), 0.0, 1.0));
+                LevySampler.of(RandomAssert.createRNG(), 0.0, 1.0));
 
             // Log normal ("inverse method").
             final double muLogNormal = 2.345;
             final double sigmaLogNormal = 0.1234;
             add(LIST, new 
org.apache.commons.math3.distribution.LogNormalDistribution(unusedRng, 
muLogNormal, sigmaLogNormal),
-                RandomSource.KISS.create());
+                RandomAssert.createRNG());
             // Log-normal (DEPRECATED "Box-Muller").
             add(LIST, new 
org.apache.commons.math3.distribution.LogNormalDistribution(unusedRng, 
muLogNormal, sigmaLogNormal),
-                new 
BoxMullerLogNormalSampler(RandomSource.XOR_SHIFT_1024_S_PHI.create(), 
muLogNormal, sigmaLogNormal));
+                new BoxMullerLogNormalSampler(RandomAssert.createRNG(), 
muLogNormal, sigmaLogNormal));
             // Log-normal ("Box-Muller").
             add(LIST, new 
org.apache.commons.math3.distribution.LogNormalDistribution(unusedRng, 
muLogNormal, sigmaLogNormal),
-                LogNormalSampler.of(new 
BoxMullerNormalizedGaussianSampler(RandomSource.XOR_SHIFT_1024_S_PHI.create()),
+                LogNormalSampler.of(new 
BoxMullerNormalizedGaussianSampler(RandomAssert.createRNG()),
                                     muLogNormal, sigmaLogNormal));
             // Log-normal ("Marsaglia").
             add(LIST, new 
org.apache.commons.math3.distribution.LogNormalDistribution(unusedRng, 
muLogNormal, sigmaLogNormal),
-                LogNormalSampler.of(new 
MarsagliaNormalizedGaussianSampler(RandomSource.MT_64.create()),
+                LogNormalSampler.of(new 
MarsagliaNormalizedGaussianSampler(RandomAssert.createRNG()),
                                     muLogNormal, sigmaLogNormal));
             // Log-normal ("Ziggurat").
             add(LIST, new 
org.apache.commons.math3.distribution.LogNormalDistribution(unusedRng, 
muLogNormal, sigmaLogNormal),
-                LogNormalSampler.of(new 
ZigguratNormalizedGaussianSampler(RandomSource.MWC_256.create()),
+                LogNormalSampler.of(new 
ZigguratNormalizedGaussianSampler(RandomAssert.createRNG()),
                                     muLogNormal, sigmaLogNormal));
             // Log-normal negative mean
             final double muLogNormal2 = -1.1;
             final double sigmaLogNormal2 = 2.3;
             add(LIST, new 
org.apache.commons.math3.distribution.LogNormalDistribution(unusedRng, 
muLogNormal2, sigmaLogNormal2),
-                    LogNormalSampler.of(new 
ZigguratNormalizedGaussianSampler(RandomSource.MWC_256.create()),
+                    LogNormalSampler.of(new 
ZigguratNormalizedGaussianSampler(RandomAssert.createRNG()),
                                         muLogNormal2, sigmaLogNormal2));
 
             // Logistic ("inverse method").
             final double muLogistic = -123.456;
             final double sLogistic = 7.89;
             add(LIST, new 
org.apache.commons.math3.distribution.LogisticDistribution(unusedRng, 
muLogistic, sLogistic),
-                RandomSource.TWO_CMRES_SELECT.create((Object) null, 2, 6));
+                RandomAssert.createRNG());
 
             // Nakagami ("inverse method").
             final double muNakagami = 78.9;
             final double omegaNakagami = 23.4;
             final double inverseAbsoluteAccuracyNakagami = 
org.apache.commons.math3.distribution.NakagamiDistribution.DEFAULT_INVERSE_ABSOLUTE_ACCURACY;
             add(LIST, new 
org.apache.commons.math3.distribution.NakagamiDistribution(unusedRng, 
muNakagami, omegaNakagami, inverseAbsoluteAccuracyNakagami),
-                RandomSource.TWO_CMRES_SELECT.create((Object) null, 5, 3));
+                RandomAssert.createRNG());
 
             // Pareto ("inverse method").
             final double scalePareto = 23.45;
             final double shapePareto = 0.1234;
             add(LIST, new 
org.apache.commons.math3.distribution.ParetoDistribution(unusedRng, 
scalePareto, shapePareto),
-                RandomSource.TWO_CMRES_SELECT.create((Object) null, 9, 11));
+                RandomAssert.createRNG());
             // Pareto.
             add(LIST, new 
org.apache.commons.math3.distribution.ParetoDistribution(unusedRng, 
scalePareto, shapePareto),
-                
InverseTransformParetoSampler.of(RandomSource.XOR_SHIFT_1024_S_PHI.create(), 
scalePareto, shapePareto));
+                InverseTransformParetoSampler.of(RandomAssert.createRNG(), 
scalePareto, shapePareto));
 
             // Stable distributions.
             // Gaussian case: alpha=2
             add(LIST, new 
org.apache.commons.math3.distribution.NormalDistribution(unusedRng, 0, 
Math.sqrt(2)),
-                StableSampler.of(RandomSource.MSWS.create(), 2, 0));
+                StableSampler.of(RandomAssert.createRNG(), 2, 0));
             add(LIST, new 
org.apache.commons.math3.distribution.NormalDistribution(unusedRng, 3.4, 0.75 * 
Math.sqrt(2)),
-                    StableSampler.of(RandomSource.MSWS.create(), 2, 0, 0.75, 
3.4));
+                    StableSampler.of(RandomAssert.createRNG(), 2, 0, 0.75, 
3.4));
             // Cauchy case: alpha=1, beta=0, gamma=2.73, delta=0.87
             add(LIST, new 
org.apache.commons.math3.distribution.CauchyDistribution(unusedRng, 0.87, 2.73),
-                StableSampler.of(RandomSource.KISS.create(), 1, 0, 2.73, 
0.87));
+                StableSampler.of(RandomAssert.createRNG(), 1, 0, 2.73, 0.87));
             // Levy case: alpha=0.5, beta=0, gamma=5.7, delta=-1.23
             // The 0-parameterization requires the reference distribution 
(1-parameterization) is shifted:
             // S0(Z) = S1(Z) + gamma * beta * tan(pi * alpha / 2); gamma = 
5.7, beta = -1, alpha = 0.5
             // = gamma * -1 * tan(pi/4) = -gamma
             add(LIST, new 
org.apache.commons.math3.distribution.LevyDistribution(unusedRng, -1.23 - 5.7, 
5.7),
-                StableSampler.of(RandomSource.JSF_64.create(), 0.5, 1.0, 5.7, 
-1.23));
+                StableSampler.of(RandomAssert.createRNG(), 0.5, 1.0, 5.7, 
-1.23));
             // Levy case: alpha=0.5, beta=0.
             // The 0-parameterization requires the reference distribution is 
shifted by -tan(pi/4) = -1
             add(LIST, new 
org.apache.commons.math3.distribution.LevyDistribution(unusedRng, -1.0, 1.0),
-                    StableSampler.of(RandomSource.JSF_64.create(), 0.5, 1.0, 
1.0, 0.0));
+                    StableSampler.of(RandomAssert.createRNG(), 0.5, 1.0, 1.0, 
0.0));
 
             // No Stable distribution in Commons Math: Deciles computed using 
Nolan's STABLE program:
             // https://edspace.american.edu/jpnolan/stable/
@@ -226,41 +226,41 @@ public final class ContinuousSamplersList {
             add(LIST, new double[] {-8.95069776039550, -7.89186827865320, 
-7.25070352695719, -6.71497820795024,
                 -6.19542020516881, -5.63245847779003, -4.94643432673952, 
-3.95462242999135,
                 -1.90020994991840, Double.POSITIVE_INFINITY},
-                StableSampler.of(RandomSource.JSF_64.create(), 1.3, 0.4, 1.5, 
-6.4));
+                StableSampler.of(RandomAssert.createRNG(), 1.3, 0.4, 1.5, 
-6.4));
             // General case (alpha < 1): alpha=0.8, beta=-0.3, gamma=0.75, 
delta=3.25
             add(LIST, new double[] {-1.60557902637291, 1.45715153372767, 
2.39577970333297, 2.86274746879986,
                 3.15907259287483, 3.38633464572309, 3.60858199662215, 
3.96001854555454, 5.16261950198042,
                 Double.POSITIVE_INFINITY},
-                StableSampler.of(RandomSource.XO_SHI_RO_512_PP.create(), 0.8, 
-0.3, 0.75, 3.25));
+                StableSampler.of(RandomAssert.createRNG(), 0.8, -0.3, 0.75, 
3.25));
             // Alpha 1 case: alpha=1.0, beta=0.3
             add(LIST, new double[] {-2.08189340389400, -0.990511737972781, 
-0.539025554211755, -0.204710171216492,
                 0.120388569770401, 0.497197960523146, 1.01228394387185, 
1.89061920660563, 4.20559140293206,
                 Double.POSITIVE_INFINITY},
-                StableSampler.of(RandomSource.XO_SHI_RO_512_SS.create(), 1.0, 
0.3));
+                StableSampler.of(RandomAssert.createRNG(), 1.0, 0.3));
             // Symmetric case (beta=0): alpha=1.3, beta=0.0
             add(LIST, new double[] {-2.29713832179280, -1.26781259700375, 
-0.739212223404616, -0.346771353386198,
                 0.00000000000000, 0.346771353386198, 0.739212223404616, 
1.26781259700376, 2.29713832179280,
                 Double.POSITIVE_INFINITY},
-                StableSampler.of(RandomSource.XO_SHI_RO_512_PLUS.create(), 
1.3, 0.0));
+                StableSampler.of(RandomAssert.createRNG(), 1.3, 0.0));
 
             // This is the smallest alpha where the CDF can be reliably 
computed.
             // Small alpha case: alpha=0.1, beta=-0.2
             add(LIST, new double[] {-14345498.0855558, -4841.68845914421, 
-22.6430159400915, -0.194461655962062,
                 0.299822962206354E-1, 0.316768853375197E-1, 
0.519382255860847E-1, 21.8595769961580,
                 147637.033822552, Double.POSITIVE_INFINITY},
-                StableSampler.of(RandomSource.XO_SHI_RO_512_PLUS.create(), 
0.1, -0.2));
+                StableSampler.of(RandomAssert.createRNG(), 0.1, -0.2));
 
             // T ("inverse method").
             final double dofT = 0.76543;
             add(LIST, new 
org.apache.commons.math3.distribution.TDistribution(unusedRng, dofT),
-                RandomSource.ISAAC.create());
+                RandomAssert.createRNG());
             // T.
             add(LIST, new 
org.apache.commons.math3.distribution.TDistribution(unusedRng, dofT),
-                TSampler.of(RandomSource.SFC_64.create(), dofT));
+                TSampler.of(RandomAssert.createRNG(), dofT));
             // T with 'large' degrees of freedom.
             final double dofTlarge = 30;
             add(LIST, new 
org.apache.commons.math3.distribution.TDistribution(unusedRng, dofTlarge),
-                TSampler.of(RandomSource.XO_SHI_RO_256_PP.create(), 
dofTlarge));
+                TSampler.of(RandomAssert.createRNG(), dofTlarge));
             // T with 'huge' degrees of freedom (approaches a normal 
distribution).
             // Deciles are computed incorrectly using Commons Math; values 
computed using Matlab.
             // Note: DF is below the switch to using a normal distribution.
@@ -268,29 +268,29 @@ public final class ContinuousSamplersList {
             add(LIST, new double[] {-1.2815515655446015, -0.84162123357291463, 
-0.52440051270804089,
                 -0.25334710313579983, 0, 0.25334710313579983, 
0.52440051270804089, 0.84162123357291474,
                 1.2815515655446015, Double.POSITIVE_INFINITY},
-                TSampler.of(RandomSource.XO_SHI_RO_256_SS.create(), dofTHuge));
+                TSampler.of(RandomAssert.createRNG(), dofTHuge));
 
             // Triangular ("inverse method").
             final double aTriangle = -0.76543;
             final double cTriangle = -0.65432;
             final double bTriangle = -0.54321;
             add(LIST, new 
org.apache.commons.math3.distribution.TriangularDistribution(unusedRng, 
aTriangle, cTriangle, bTriangle),
-                RandomSource.MT.create());
+                RandomAssert.createRNG());
 
             // Uniform ("inverse method").
             final double loUniform = -1.098;
             final double hiUniform = 0.76;
             add(LIST, new 
org.apache.commons.math3.distribution.UniformRealDistribution(unusedRng, 
loUniform, hiUniform),
-                RandomSource.TWO_CMRES.create());
+                RandomAssert.createRNG());
             // Uniform.
             add(LIST, new 
org.apache.commons.math3.distribution.UniformRealDistribution(unusedRng, 
loUniform, hiUniform),
-                ContinuousUniformSampler.of(RandomSource.MT_64.create(), 
loUniform, hiUniform));
+                ContinuousUniformSampler.of(RandomAssert.createRNG(), 
loUniform, hiUniform));
 
             // Weibull ("inverse method").
             final double alphaWeibull = 678.9;
             final double betaWeibull = 98.76;
             add(LIST, new 
org.apache.commons.math3.distribution.WeibullDistribution(unusedRng, 
alphaWeibull, betaWeibull),
-                RandomSource.WELL_44497_B.create());
+                RandomAssert.createRNG());
         } catch (Exception e) {
             // CHECKSTYLE: stop Regexp
             System.err.println("Unexpected exception while creating the list 
of samplers: " + e);
diff --git 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/ContinuousUniformSamplerTest.java
 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/ContinuousUniformSamplerTest.java
index 688ada0d..5f9f7e3e 100644
--- 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/ContinuousUniformSamplerTest.java
+++ 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/ContinuousUniformSamplerTest.java
@@ -34,7 +34,7 @@ class ContinuousUniformSamplerTest {
     void testNoRestrictionOnOrderOfLowAndHighParameters() {
         final double low = 3.18;
         final double high = 5.23;
-        final UniformRandomProvider rng = RandomSource.SPLIT_MIX_64.create();
+        final UniformRandomProvider rng = RandomAssert.createRNG();
         testSampleInRange(rng, low, high);
         testSampleInRange(rng, high, low);
     }
diff --git 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/DirichletSamplerTest.java
 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/DirichletSamplerTest.java
index 9c75a7ef..db6ca875 100644
--- 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/DirichletSamplerTest.java
+++ 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/DirichletSamplerTest.java
@@ -193,7 +193,7 @@ class DirichletSamplerTest {
      */
     private static void assertSamples(double... alpha) {
         // No fixed seed. Failed tests will be repeated by the JUnit test 
runner.
-        final UniformRandomProvider rng = 
RandomSource.XO_RO_SHI_RO_128_PP.create();
+        final UniformRandomProvider rng = RandomAssert.createRNG();
         final DirichletSampler sampler = DirichletSampler.of(rng, alpha);
         final int k = alpha.length;
         final double[][] samples = new double[100000][];
diff --git 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/DiscreteSamplerTest.java
 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/DiscreteSamplerTest.java
index 029d1a4e..3e52f931 100644
--- 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/DiscreteSamplerTest.java
+++ 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/DiscreteSamplerTest.java
@@ -17,6 +17,7 @@
 package org.apache.commons.rng.sampling.distribution;
 
 import java.util.concurrent.ThreadLocalRandom;
+import org.apache.commons.rng.sampling.RandomAssert;
 import org.apache.commons.rng.simple.RandomSource;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.RepeatedTest;
@@ -30,7 +31,7 @@ import org.junit.jupiter.params.provider.ValueSource;
 class DiscreteSamplerTest {
     @Test
     void testSamplesUnlimitedSize() {
-        final DiscreteSampler s = RandomSource.SPLIT_MIX_64.create()::nextInt;
+        final DiscreteSampler s = RandomAssert.createRNG()::nextInt;
         Assertions.assertEquals(Long.MAX_VALUE, 
s.samples().spliterator().estimateSize());
     }
 
diff --git 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/DiscreteSamplersList.java
 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/DiscreteSamplersList.java
index 1a33921d..fe36b65c 100644
--- 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/DiscreteSamplersList.java
+++ 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/DiscreteSamplersList.java
@@ -23,7 +23,7 @@ import java.util.Collections;
 import org.apache.commons.math3.util.MathArrays;
 
 import org.apache.commons.rng.UniformRandomProvider;
-import org.apache.commons.rng.simple.RandomSource;
+import org.apache.commons.rng.sampling.RandomAssert;
 
 /**
  * List of samplers.
@@ -48,26 +48,26 @@ public final class DiscreteSamplersList {
             final double probSuccessBinomial = 0.67;
             add(LIST, new 
org.apache.commons.math3.distribution.BinomialDistribution(unusedRng, 
trialsBinomial, probSuccessBinomial),
                 MathArrays.sequence(8, 9, 1),
-                RandomSource.KISS.create());
+                RandomAssert.createRNG());
             add(LIST, new 
org.apache.commons.math3.distribution.BinomialDistribution(unusedRng, 
trialsBinomial, probSuccessBinomial),
                 // range [9,16]
                 MathArrays.sequence(8, 9, 1),
-                
MarsagliaTsangWangDiscreteSampler.Binomial.of(RandomSource.WELL_19937_A.create(),
 trialsBinomial, probSuccessBinomial));
+                
MarsagliaTsangWangDiscreteSampler.Binomial.of(RandomAssert.createRNG(), 
trialsBinomial, probSuccessBinomial));
             // Inverted
             add(LIST, new 
org.apache.commons.math3.distribution.BinomialDistribution(unusedRng, 
trialsBinomial, 1 - probSuccessBinomial),
                 // range [4,11] = [20-16, 20-9]
                 MathArrays.sequence(8, 4, 1),
-                
MarsagliaTsangWangDiscreteSampler.Binomial.of(RandomSource.WELL_19937_C.create(),
 trialsBinomial, 1 - probSuccessBinomial));
+                
MarsagliaTsangWangDiscreteSampler.Binomial.of(RandomAssert.createRNG(), 
trialsBinomial, 1 - probSuccessBinomial));
 
             // Geometric ("inverse method").
             final double probSuccessGeometric = 0.21;
             add(LIST, new 
org.apache.commons.math3.distribution.GeometricDistribution(unusedRng, 
probSuccessGeometric),
                 MathArrays.sequence(10, 0, 1),
-                RandomSource.ISAAC.create());
+                RandomAssert.createRNG());
             // Geometric.
             add(LIST, new 
org.apache.commons.math3.distribution.GeometricDistribution(unusedRng, 
probSuccessGeometric),
                 MathArrays.sequence(10, 0, 1),
-                
GeometricSampler.of(RandomSource.XOR_SHIFT_1024_S_PHI.create(), 
probSuccessGeometric));
+                GeometricSampler.of(RandomAssert.createRNG(), 
probSuccessGeometric));
 
             // Hypergeometric ("inverse method").
             final int popSizeHyper = 34;
@@ -75,57 +75,57 @@ public final class DiscreteSamplersList {
             final int sampleSizeHyper = 12;
             add(LIST, new 
org.apache.commons.math3.distribution.HypergeometricDistribution(unusedRng, 
popSizeHyper, numSuccessesHyper, sampleSizeHyper),
                 MathArrays.sequence(10, 0, 1),
-                RandomSource.MT.create());
+                RandomAssert.createRNG());
 
             // Pascal ("inverse method").
             final int numSuccessesPascal = 6;
             final double probSuccessPascal = 0.2;
             add(LIST, new 
org.apache.commons.math3.distribution.PascalDistribution(unusedRng, 
numSuccessesPascal, probSuccessPascal),
                 MathArrays.sequence(18, 1, 1),
-                RandomSource.TWO_CMRES.create());
+                RandomAssert.createRNG());
 
             // Uniform ("inverse method").
             final int loUniform = -3;
             final int hiUniform = 4;
             add(LIST, new 
org.apache.commons.math3.distribution.UniformIntegerDistribution(unusedRng, 
loUniform, hiUniform),
                 MathArrays.sequence(8, -3, 1),
-                RandomSource.SPLIT_MIX_64.create());
+                RandomAssert.createRNG());
             // Uniform (power of 2 range).
             add(LIST, new 
org.apache.commons.math3.distribution.UniformIntegerDistribution(unusedRng, 
loUniform, hiUniform),
                 MathArrays.sequence(8, -3, 1),
-                DiscreteUniformSampler.of(RandomSource.MT_64.create(), 
loUniform, hiUniform));
+                DiscreteUniformSampler.of(RandomAssert.createRNG(), loUniform, 
hiUniform));
             // Uniform (large range).
             final int halfMax = Integer.MAX_VALUE / 2;
             final int hiLargeUniform = halfMax + 10;
             final int loLargeUniform = -hiLargeUniform;
             add(LIST, new 
org.apache.commons.math3.distribution.UniformIntegerDistribution(unusedRng, 
loLargeUniform, hiLargeUniform),
                 MathArrays.sequence(20, -halfMax, halfMax / 10),
-                DiscreteUniformSampler.of(RandomSource.WELL_1024_A.create(), 
loLargeUniform, hiLargeUniform));
+                DiscreteUniformSampler.of(RandomAssert.createRNG(), 
loLargeUniform, hiLargeUniform));
             // Uniform (non-power of 2 range).
             final int rangeNonPowerOf2Uniform = 11;
             final int hiNonPowerOf2Uniform = loUniform + 
rangeNonPowerOf2Uniform;
             add(LIST, new 
org.apache.commons.math3.distribution.UniformIntegerDistribution(unusedRng, 
loUniform, hiNonPowerOf2Uniform),
                 MathArrays.sequence(rangeNonPowerOf2Uniform, -3, 1),
-                
DiscreteUniformSampler.of(RandomSource.XO_SHI_RO_256_SS.create(), loUniform, 
hiNonPowerOf2Uniform));
+                DiscreteUniformSampler.of(RandomAssert.createRNG(), loUniform, 
hiNonPowerOf2Uniform));
 
             // Zipf ("inverse method").
             final int numElementsZipf = 5;
             final double exponentZipf = 2.345;
             add(LIST, new 
org.apache.commons.math3.distribution.ZipfDistribution(unusedRng, 
numElementsZipf, exponentZipf),
                 MathArrays.sequence(5, 1, 1),
-                RandomSource.XOR_SHIFT_1024_S_PHI.create());
+                RandomAssert.createRNG());
             // Zipf.
             add(LIST, new 
org.apache.commons.math3.distribution.ZipfDistribution(unusedRng, 
numElementsZipf, exponentZipf),
                 MathArrays.sequence(5, 1, 1),
-                
RejectionInversionZipfSampler.of(RandomSource.WELL_19937_C.create(), 
numElementsZipf, exponentZipf));
+                RejectionInversionZipfSampler.of(RandomAssert.createRNG(), 
numElementsZipf, exponentZipf));
             // Zipf (exponent close to 1).
             final double exponentCloseToOneZipf = 1 - 1e-10;
             add(LIST, new 
org.apache.commons.math3.distribution.ZipfDistribution(unusedRng, 
numElementsZipf, exponentCloseToOneZipf),
                 MathArrays.sequence(5, 1, 1),
-                
RejectionInversionZipfSampler.of(RandomSource.WELL_19937_C.create(), 
numElementsZipf, exponentCloseToOneZipf));
+                RejectionInversionZipfSampler.of(RandomAssert.createRNG(), 
numElementsZipf, exponentCloseToOneZipf));
             // Zipf (exponent = 0).
             add(LIST, MathArrays.sequence(5, 1, 1), new double[] {0.2, 0.2, 
0.2, 0.2, 0.2},
-                
RejectionInversionZipfSampler.of(RandomSource.XO_RO_SHI_RO_128_PP.create(), 
numElementsZipf, 0.0));
+                RejectionInversionZipfSampler.of(RandomAssert.createRNG(), 
numElementsZipf, 0.0));
 
             // Poisson ("inverse method").
             final double epsilonPoisson = 
org.apache.commons.math3.distribution.PoissonDistribution.DEFAULT_EPSILON;
@@ -133,65 +133,65 @@ public final class DiscreteSamplersList {
             final double meanPoisson = 3.21;
             add(LIST, new 
org.apache.commons.math3.distribution.PoissonDistribution(unusedRng, 
meanPoisson, epsilonPoisson, maxIterationsPoisson),
                 MathArrays.sequence(10, 0, 1),
-                RandomSource.MWC_256.create());
+                RandomAssert.createRNG());
             // Poisson.
             add(LIST, new 
org.apache.commons.math3.distribution.PoissonDistribution(unusedRng, 
meanPoisson, epsilonPoisson, maxIterationsPoisson),
                 MathArrays.sequence(10, 0, 1),
-                PoissonSampler.of(RandomSource.KISS.create(), meanPoisson));
+                PoissonSampler.of(RandomAssert.createRNG(), meanPoisson));
             // Dedicated small mean poisson samplers
             add(LIST, new 
org.apache.commons.math3.distribution.PoissonDistribution(unusedRng, 
meanPoisson, epsilonPoisson, maxIterationsPoisson),
                 MathArrays.sequence(10, 0, 1),
-                
SmallMeanPoissonSampler.of(RandomSource.XO_SHI_RO_256_PLUS.create(), 
meanPoisson));
+                SmallMeanPoissonSampler.of(RandomAssert.createRNG(), 
meanPoisson));
             add(LIST, new 
org.apache.commons.math3.distribution.PoissonDistribution(unusedRng, 
meanPoisson, epsilonPoisson, maxIterationsPoisson),
                 MathArrays.sequence(10, 0, 1),
-                
KempSmallMeanPoissonSampler.of(RandomSource.XO_SHI_RO_128_PLUS.create(), 
meanPoisson));
+                KempSmallMeanPoissonSampler.of(RandomAssert.createRNG(), 
meanPoisson));
             add(LIST, new 
org.apache.commons.math3.distribution.PoissonDistribution(unusedRng, 
meanPoisson, epsilonPoisson, maxIterationsPoisson),
                 MathArrays.sequence(10, 0, 1),
-                
MarsagliaTsangWangDiscreteSampler.Poisson.of(RandomSource.XO_SHI_RO_128_PLUS.create(),
 meanPoisson));
+                
MarsagliaTsangWangDiscreteSampler.Poisson.of(RandomAssert.createRNG(), 
meanPoisson));
             // LargeMeanPoissonSampler should work at small mean.
             // Note: This hits a code path where the sample from the normal 
distribution is rejected.
             add(LIST, new 
org.apache.commons.math3.distribution.PoissonDistribution(unusedRng, 
meanPoisson, epsilonPoisson, maxIterationsPoisson),
                 MathArrays.sequence(10, 0, 1),
-                
LargeMeanPoissonSampler.of(RandomSource.PCG_MCG_XSH_RR_32.create(), 
meanPoisson));
+                LargeMeanPoissonSampler.of(RandomAssert.createRNG(), 
meanPoisson));
             // Poisson (40 < mean < 80).
             final double largeMeanPoisson = 67.89;
             add(LIST, new 
org.apache.commons.math3.distribution.PoissonDistribution(unusedRng, 
largeMeanPoisson, epsilonPoisson, maxIterationsPoisson),
                 MathArrays.sequence(50, (int) (largeMeanPoisson - 25), 1),
-                PoissonSampler.of(RandomSource.SPLIT_MIX_64.create(), 
largeMeanPoisson));
+                PoissonSampler.of(RandomAssert.createRNG(), largeMeanPoisson));
             // Dedicated large mean poisson sampler
             add(LIST, new 
org.apache.commons.math3.distribution.PoissonDistribution(unusedRng, 
largeMeanPoisson, epsilonPoisson, maxIterationsPoisson),
                 MathArrays.sequence(50, (int) (largeMeanPoisson - 25), 1),
-                LargeMeanPoissonSampler.of(RandomSource.SPLIT_MIX_64.create(), 
largeMeanPoisson));
+                LargeMeanPoissonSampler.of(RandomAssert.createRNG(), 
largeMeanPoisson));
             add(LIST, new 
org.apache.commons.math3.distribution.PoissonDistribution(unusedRng, 
largeMeanPoisson, epsilonPoisson, maxIterationsPoisson),
                 MathArrays.sequence(50, (int) (largeMeanPoisson - 25), 1),
-                
MarsagliaTsangWangDiscreteSampler.Poisson.of(RandomSource.XO_RO_SHI_RO_128_PLUS.create(),
 largeMeanPoisson));
+                
MarsagliaTsangWangDiscreteSampler.Poisson.of(RandomAssert.createRNG(), 
largeMeanPoisson));
             // Poisson (mean >> 40).
             final double veryLargeMeanPoisson = 543.21;
             add(LIST, new 
org.apache.commons.math3.distribution.PoissonDistribution(unusedRng, 
veryLargeMeanPoisson, epsilonPoisson, maxIterationsPoisson),
                 MathArrays.sequence(100, (int) (veryLargeMeanPoisson - 50), 1),
-                PoissonSampler.of(RandomSource.SPLIT_MIX_64.create(), 
veryLargeMeanPoisson));
+                PoissonSampler.of(RandomAssert.createRNG(), 
veryLargeMeanPoisson));
             // Dedicated large mean poisson sampler
             add(LIST, new 
org.apache.commons.math3.distribution.PoissonDistribution(unusedRng, 
veryLargeMeanPoisson, epsilonPoisson, maxIterationsPoisson),
                 MathArrays.sequence(100, (int) (veryLargeMeanPoisson - 50), 1),
-                LargeMeanPoissonSampler.of(RandomSource.SPLIT_MIX_64.create(), 
veryLargeMeanPoisson));
+                LargeMeanPoissonSampler.of(RandomAssert.createRNG(), 
veryLargeMeanPoisson));
             add(LIST, new 
org.apache.commons.math3.distribution.PoissonDistribution(unusedRng, 
veryLargeMeanPoisson, epsilonPoisson, maxIterationsPoisson),
                 MathArrays.sequence(100, (int) (veryLargeMeanPoisson - 50), 1),
-                
MarsagliaTsangWangDiscreteSampler.Poisson.of(RandomSource.XO_RO_SHI_RO_64_SS.create(),
 veryLargeMeanPoisson));
+                
MarsagliaTsangWangDiscreteSampler.Poisson.of(RandomAssert.createRNG(), 
veryLargeMeanPoisson));
 
             // Any discrete distribution
             final int[] discretePoints = {0, 1, 2, 3, 4};
             final double[] discreteProbabilities = {0.1, 0.2, 0.3, 0.4, 0.5};
             final long[] discreteFrequencies = {1, 2, 3, 4, 5};
             add(LIST, discretePoints, discreteProbabilities,
-                
MarsagliaTsangWangDiscreteSampler.Enumerated.of(RandomSource.XO_SHI_RO_512_PLUS.create(),
 discreteProbabilities));
+                
MarsagliaTsangWangDiscreteSampler.Enumerated.of(RandomAssert.createRNG(), 
discreteProbabilities));
             add(LIST, discretePoints, discreteProbabilities,
-                
GuideTableDiscreteSampler.of(RandomSource.XO_SHI_RO_512_SS.create(), 
discreteProbabilities));
+                GuideTableDiscreteSampler.of(RandomAssert.createRNG(), 
discreteProbabilities));
             add(LIST, discretePoints, discreteProbabilities,
-                AliasMethodDiscreteSampler.of(RandomSource.KISS.create(), 
discreteProbabilities));
+                AliasMethodDiscreteSampler.of(RandomAssert.createRNG(), 
discreteProbabilities));
             add(LIST, discretePoints, discreteProbabilities,
-                
FastLoadedDiceRollerDiscreteSampler.of(RandomSource.L64_X128_MIX.create(), 
discreteFrequencies));
+                
FastLoadedDiceRollerDiscreteSampler.of(RandomAssert.createRNG(), 
discreteFrequencies));
             add(LIST, discretePoints, discreteProbabilities,
-                
FastLoadedDiceRollerDiscreteSampler.of(RandomSource.L64_X128_SS.create(), 
discreteProbabilities));
+                
FastLoadedDiceRollerDiscreteSampler.of(RandomAssert.createRNG(), 
discreteProbabilities));
         } catch (Exception e) {
             // CHECKSTYLE: stop Regexp
             System.err.println("Unexpected exception while creating the list 
of samplers: " + e);
diff --git 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/DiscreteUniformSamplerTest.java
 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/DiscreteUniformSamplerTest.java
index 0665f4da..69eefccf 100644
--- 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/DiscreteUniformSamplerTest.java
+++ 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/DiscreteUniformSamplerTest.java
@@ -46,7 +46,7 @@ class DiscreteUniformSamplerTest {
     void testSamplesWithRangeOf1() {
         final int upper = 99;
         final int lower = upper;
-        final UniformRandomProvider rng = RandomSource.SPLIT_MIX_64.create();
+        final UniformRandomProvider rng = RandomAssert.createRNG();
         final SharedStateDiscreteSampler sampler = 
DiscreteUniformSampler.of(rng, lower, upper);
         for (int i = 0; i < 5; i++) {
             Assertions.assertEquals(lower, sampler.sample());
diff --git 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/FastLoadedDiceRollerDiscreteSamplerTest.java
 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/FastLoadedDiceRollerDiscreteSamplerTest.java
index 2ccf43c4..b130f565 100644
--- 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/FastLoadedDiceRollerDiscreteSamplerTest.java
+++ 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/FastLoadedDiceRollerDiscreteSamplerTest.java
@@ -42,7 +42,7 @@ class FastLoadedDiceRollerDiscreteSamplerTest {
      * @return the FLDR sampler
      */
     private static SharedStateDiscreteSampler createSampler(long... 
frequencies) {
-        final UniformRandomProvider rng = RandomSource.SPLIT_MIX_64.create();
+        final UniformRandomProvider rng = RandomAssert.createRNG();
         return FastLoadedDiceRollerDiscreteSampler.of(rng, frequencies);
     }
 
@@ -53,7 +53,7 @@ class FastLoadedDiceRollerDiscreteSamplerTest {
      * @return the FLDR sampler
      */
     private static SharedStateDiscreteSampler createSampler(double... weights) 
{
-        final UniformRandomProvider rng = RandomSource.SPLIT_MIX_64.create();
+        final UniformRandomProvider rng = RandomAssert.createRNG();
         return FastLoadedDiceRollerDiscreteSampler.of(rng, weights);
     }
 
@@ -403,7 +403,7 @@ class FastLoadedDiceRollerDiscreteSamplerTest {
     @ValueSource(ints = {1023, 67, 1, -59, -1020, -1021})
     void testScaledWeights(int scaleFactor) {
         // Weights in [0, 1)
-        final double[] w1 = RandomSource.KISS.create().doubles(10).toArray();
+        final double[] w1 = RandomAssert.createRNG().doubles(10).toArray();
         final double scale = Math.scalb(1.0, scaleFactor);
         final double[] w2 = Arrays.stream(w1).map(x -> x * scale).toArray();
         final long seed = RandomSource.createLong();
diff --git 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/GuideTableDiscreteSamplerTest.java
 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/GuideTableDiscreteSamplerTest.java
index 0f518367..0b97d710 100644
--- 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/GuideTableDiscreteSamplerTest.java
+++ 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/GuideTableDiscreteSamplerTest.java
@@ -90,7 +90,7 @@ class GuideTableDiscreteSamplerTest {
 
     @Test
     void testToString() {
-        final UniformRandomProvider rng = RandomSource.SPLIT_MIX_64.create();
+        final UniformRandomProvider rng = RandomAssert.createRNG();
         final SharedStateDiscreteSampler sampler = 
GuideTableDiscreteSampler.of(rng, new double[] {0.5, 0.5}, 1.0);
         Assertions.assertTrue(sampler.toString().toLowerCase().contains("guide 
table"));
     }
@@ -187,7 +187,7 @@ class GuideTableDiscreteSamplerTest {
      * @param alpha the alpha
      */
     private static void checkSamples(double[] probabilies, double alpha) {
-        final UniformRandomProvider rng = RandomSource.JSF_64.create();
+        final UniformRandomProvider rng = RandomAssert.createRNG();
         final SharedStateDiscreteSampler sampler = 
GuideTableDiscreteSampler.of(rng, probabilies, alpha);
 
         final int numberOfSamples = 10000;
diff --git 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/LongSamplerTest.java
 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/LongSamplerTest.java
index 26ca85e5..34792d56 100644
--- 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/LongSamplerTest.java
+++ 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/LongSamplerTest.java
@@ -17,6 +17,7 @@
 package org.apache.commons.rng.sampling.distribution;
 
 import java.util.concurrent.ThreadLocalRandom;
+import org.apache.commons.rng.sampling.RandomAssert;
 import org.apache.commons.rng.simple.RandomSource;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.RepeatedTest;
@@ -30,7 +31,7 @@ import org.junit.jupiter.params.provider.ValueSource;
 class LongSamplerTest {
     @Test
     void testSamplesUnlimitedSize() {
-        final LongSampler s = RandomSource.SPLIT_MIX_64.create()::nextLong;
+        final LongSampler s = RandomAssert.createRNG()::nextLong;
         Assertions.assertEquals(Long.MAX_VALUE, 
s.samples().spliterator().estimateSize());
     }
 
diff --git 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/MarsagliaTsangWangDiscreteSamplerTest.java
 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/MarsagliaTsangWangDiscreteSamplerTest.java
index e839fb14..79eda8bf 100644
--- 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/MarsagliaTsangWangDiscreteSamplerTest.java
+++ 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/MarsagliaTsangWangDiscreteSamplerTest.java
@@ -183,7 +183,7 @@ class MarsagliaTsangWangDiscreteSamplerTest {
     void testRealProbabilityDistributionSamples() {
         // These do not have to sum to 1
         final double[] probabilities = new double[11];
-        final UniformRandomProvider rng = RandomSource.SPLIT_MIX_64.create();
+        final UniformRandomProvider rng = RandomAssert.createRNG();
         for (int i = 0; i < probabilities.length; i++) {
             probabilities[i] = rng.nextDouble();
         }
diff --git 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/StableSamplerTest.java
 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/StableSamplerTest.java
index 4f4f06d0..df4f584f 100644
--- 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/StableSamplerTest.java
+++ 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/StableSamplerTest.java
@@ -538,7 +538,7 @@ class StableSamplerTest {
         // As pi is an approximation then the cos value is not exactly 0
         Assertions.assertTrue(cosPi2 > 0);
 
-        final UniformRandomProvider rng = 
RandomSource.XO_SHI_RO_256_SS.create();
+        final UniformRandomProvider rng = RandomAssert.createRNG();
 
         // The term is mirrored around 1 so use extremes between 1 and 0
         final double[] alphas = {1, Math.nextDown(1), 0.99, 0.5, 0.1, 0.05, 
0.01, DU};
@@ -690,7 +690,7 @@ class StableSamplerTest {
     //@Test
     void expm1ULPReport() {
         // Create random doubles with a given exponent. Compute the mean and 
max ULP difference.
-        final UniformRandomProvider rng = 
RandomSource.XO_RO_SHI_RO_128_PP.create();
+        final UniformRandomProvider rng = RandomAssert.createRNG();
         // For a quicker report set to <= 2^20.
         final int size = 1 << 30;
         // Create random doubles using random bits in the 52-bit mantissa.
diff --git 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/UniformLongSamplerTest.java
 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/UniformLongSamplerTest.java
index 802a018e..2b46fa0d 100644
--- 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/UniformLongSamplerTest.java
+++ 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/UniformLongSamplerTest.java
@@ -56,7 +56,7 @@ class UniformLongSamplerTest {
     void testSamplesWithRangeOf1() {
         final long upper = 99;
         final long lower = upper;
-        final UniformRandomProvider rng = RandomSource.SPLIT_MIX_64.create();
+        final UniformRandomProvider rng = RandomAssert.createRNG();
         final UniformLongSampler sampler = UniformLongSampler.of(rng, lower, 
upper);
         for (int i = 0; i < 5; i++) {
             Assertions.assertEquals(lower, sampler.sample());
diff --git 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/shape/TriangleSamplerTest.java
 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/shape/TriangleSamplerTest.java
index 9f22507d..d60b5092 100644
--- 
a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/shape/TriangleSamplerTest.java
+++ 
b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/shape/TriangleSamplerTest.java
@@ -82,7 +82,7 @@ class TriangleSamplerTest {
         // Test that a(1 - s - t) + sb + tc does not overflow is s+t = 1
         final double max = Double.MAX_VALUE;
         s -= delta;
-        final UniformRandomProvider rng = 
RandomSource.XO_RO_SHI_RO_128_PP.create();
+        final UniformRandomProvider rng = RandomAssert.createRNG();
         for (int n = 0; n < 100; n++) {
             Assertions.assertNotEquals(Double.POSITIVE_INFINITY, (1 - s - t) * 
max + s * max + t * max);
             s = rng.nextDouble();

Reply via email to