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 dbbf4e6..a662538 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
@@ -444,8 +444,7 @@
 
     @Test
     void testMomentsSampling() {
-        final UniformRandomProvider rng = RandomSource.create(RandomSource.WELL_1024_A,
-                                                              123456789L);
+        final UniformRandomProvider rng = RandomSource.WELL_1024_A.create(123456789L);
         final int numSamples = 1000;
         for (final double alpha : ALPHA_BETAS) {
             for (final double beta : ALPHA_BETAS) {
@@ -464,8 +463,7 @@
 
     @Test
     void testGoodnessOfFit() {
-        final UniformRandomProvider rng = RandomSource.create(RandomSource.WELL_19937_A,
-                                                              123456789L);
+        final UniformRandomProvider rng = RandomSource.WELL_19937_A.create(123456789L);
 
         final int numSamples = 1000;
         final double level = 0.01;
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 5412fea..0844da5 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 @@
 
         // Use fixed seed.
         final ContinuousDistribution.Sampler sampler =
-            getDistribution().createSampler(RandomSource.create(RandomSource.WELL_19937_C, 123456789L));
+            getDistribution().createSampler(RandomSource.WELL_19937_C.create(123456789L));
         final double[] sample = TestUtils.sample(sampleSize, sampler);
 
         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 ebafcbb..35ff33f 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
@@ -490,7 +490,7 @@
 
         // Use fixed seed.
         final DiscreteDistribution.Sampler sampler =
-            getDistribution().createSampler(RandomSource.create(RandomSource.WELL_512_A, 1000));
+            getDistribution().createSampler(RandomSource.WELL_512_A.create(1000));
         final int[] sample = TestUtils.sample(sampleSize, sampler);
 
         final long[] counts = new long[length];
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/HypergeometricDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/HypergeometricDistributionTest.java
index 14f3410..7956f57 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/HypergeometricDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/HypergeometricDistributionTest.java
@@ -331,7 +331,7 @@
         final int m = 42976365;
         final int n = 50;
         final DiscreteDistribution.Sampler dist =
-            new HypergeometricDistribution(N, m, n).createSampler(RandomSource.create(RandomSource.WELL_512_A));
+            new HypergeometricDistribution(N, m, n).createSampler(RandomSource.WELL_512_A.create());
 
         for (int i = 0; i < 100; i++) {
             final int sample = dist.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 916ee5c..c8c4c3a 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
@@ -145,7 +145,7 @@
                 // that all test cases do not fail is 0.999^(32*22) = 0.49442874426
                 final DiscreteDistribution.Sampler distribution =
                     new ZipfDistribution(numPoints, exponent).createSampler(
-                        RandomSource.create(RandomSource.WELL_19937_C, 6));
+                        RandomSource.WELL_19937_C.create(6));
 
                 final double[] expectedCounts = new double[numPoints];
                 final long[] observedCounts = new long[numPoints];
