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 55c8c42b6818f1b813f29b785713b75a87302c2d
Author: Alex Herbert <aherb...@apache.org>
AuthorDate: Tue Mar 19 21:28:44 2019 +0000

    RNG-82: Mark XOR_SHIFT_1024_S deprecated.
---
 .../rng/core/source64/XorShift1024Star.java        |  9 ++++----
 .../rng/core/source64/XorShift1024StarPhi.java     | 12 +++++-----
 .../apache/commons/rng/simple/RandomSource.java    | 26 ++++++++++++++--------
 .../rng/simple/internal/ProviderBuilder.java       |  9 ++++----
 4 files changed, 34 insertions(+), 22 deletions(-)

diff --git 
a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/XorShift1024Star.java
 
b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/XorShift1024Star.java
index c3557d0..2a871e6 100644
--- 
a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/XorShift1024Star.java
+++ 
b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/XorShift1024Star.java
@@ -23,6 +23,9 @@ import org.apache.commons.rng.core.util.NumberFactory;
 /**
  * A fast RNG implementing the {@code XorShift1024*} algorithm.
  *
+ * <p>Note: This has been superseded by {@link XorShift1024StarPhi}. The 
sequences emitted
+ * by both generators are correlated.</p>
+ *
  * @see <a href="http://xorshift.di.unimi.it/xorshift1024star.c";>Original 
source code</a>
  * @see <a href="https://en.wikipedia.org/wiki/Xorshift";>Xorshift 
(Wikipedia)</a>
  * @since 1.0
@@ -43,8 +46,7 @@ public class XorShift1024Star extends LongProvider {
      * @param seed Initial seed.
      * If the length is larger than 16, only the first 16 elements will
      * be used; if smaller, the remaining elements will be automatically
-     * set.
-     * A seed containing all zeros will create a non-functional generator.
+     * set. A seed containing all zeros will create a non-functional generator.
      */
     public XorShift1024Star(long[] seed) {
         this(1181783497276652981L, seed);
@@ -57,8 +59,7 @@ public class XorShift1024Star extends LongProvider {
      * @param seed Initial seed.
      * If the length is larger than 16, only the first 16 elements will
      * be used; if smaller, the remaining elements will be automatically
-     * set.
-     * A seed containing all zeros will create a non-functional generator.
+     * set. A seed containing all zeros will create a non-functional generator.
      */
     protected XorShift1024Star(long multiplier, long[] seed) {
         this.multiplier = multiplier;
diff --git 
a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/XorShift1024StarPhi.java
 
b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/XorShift1024StarPhi.java
index 710dd6c..b8d60f8 100644
--- 
a/commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/XorShift1024StarPhi.java
+++ 
b/commons-rng-core/src/main/java/org/apache/commons/rng/core/source64/XorShift1024StarPhi.java
@@ -20,9 +20,12 @@ package org.apache.commons.rng.core.source64;
 /**
  * A fast RNG implementing the {@code XorShift1024*} algorithm.
  *
- * <p>This supersedes {@link XorShift1024Star}. The generator differs only in 
the multiplier (a
- * fixed-point representation of the golden ratio), which eliminates linear 
dependencies from one of
- * the lowest bits.
+ * <p>Note: This supersedes {@link XorShift1024Star}. The sequences emitted by 
both
+ * generators are correlated.</p>
+ *
+ * <p>This generator differs only in the final multiplier (a fixed-point 
representation
+ * of the golden ratio), which eliminates linear dependencies from one of the 
lowest
+ * bits.</p>
  *
  * @see <a href="http://xorshift.di.unimi.it/xorshift1024star.c";>Original 
source code</a>
  * @see <a href="https://en.wikipedia.org/wiki/Xorshift";>Xorshift 
(Wikipedia)</a>
@@ -35,8 +38,7 @@ public class XorShift1024StarPhi extends XorShift1024Star {
      * @param seed Initial seed.
      * If the length is larger than 16, only the first 16 elements will
      * be used; if smaller, the remaining elements will be automatically
-     * set.
-     * A seed containing all zeros will create a non-functional generator.
+     * set. A seed containing all zeros will create a non-functional generator.
      */
     public XorShift1024StarPhi(long[] seed) {
         super(0x9e3779b97f4a7c13L, seed);
diff --git 
a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/RandomSource.java
 
b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/RandomSource.java
index f2a9bd5..35c847a 100644
--- 
a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/RandomSource.java
+++ 
b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/RandomSource.java
@@ -243,17 +243,16 @@ public enum RandomSource {
      *  <li>Native seed type: {@code long[]}.</li>
      *  <li>Native seed size: 16.</li>
      * </ul>
+     *
+     * @deprecated Since 1.3, where it is recommended to use {@code 
XOR_SHIFT_1024_S_PHI}
+     * instead due to its slightly better (more uniform) output. {@code 
XOR_SHIFT_1024_S}
+     * is still quite usable but both are variants of the same algorithm and 
maintain their
+     * internal state identically. Their outputs are correlated and the two 
should not be
+     * used together when independent sequences are assumed.
      */
+    @Deprecated
     XOR_SHIFT_1024_S(ProviderBuilder.RandomSourceInternal.XOR_SHIFT_1024_S),
     /**
-     * Source of randomness is {@link 
org.apache.commons.rng.core.source64.XorShift1024StarPhi}.
-     * <ul>
-     *  <li>Native seed type: {@code long[]}.</li>
-     *  <li>Native seed size: 16.</li>
-     * </ul>
-     */
-    
XOR_SHIFT_1024_S_PHI(ProviderBuilder.RandomSourceInternal.XOR_SHIFT_1024_S_PHI),
-    /**
      * Source of randomness is {@link 
org.apache.commons.rng.core.source64.TwoCmres}.
      * This generator is equivalent to {@link #TWO_CMRES_SELECT} with the 
choice of the
      * pair {@code (0, 1)} for the two subcycle generators.
@@ -299,7 +298,16 @@ public enum RandomSource {
      *  <li>Native seed size: 4.</li>
      * </ul>
      */
-    KISS(ProviderBuilder.RandomSourceInternal.KISS);
+    KISS(ProviderBuilder.RandomSourceInternal.KISS),
+    /**
+     * Source of randomness is {@link 
org.apache.commons.rng.core.source64.XorShift1024StarPhi}.
+     * <ul>
+     *  <li>Native seed type: {@code long[]}.</li>
+     *  <li>Native seed size: 16.</li>
+     * </ul>
+     */
+    
XOR_SHIFT_1024_S_PHI(ProviderBuilder.RandomSourceInternal.XOR_SHIFT_1024_S_PHI),
+    ;
 
     /** Internal identifier. */
     private final ProviderBuilder.RandomSourceInternal internalIdentifier;
diff --git 
a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ProviderBuilder.java
 
b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ProviderBuilder.java
index e3a540e..059bb03 100644
--- 
a/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ProviderBuilder.java
+++ 
b/commons-rng-simple/src/main/java/org/apache/commons/rng/simple/internal/ProviderBuilder.java
@@ -291,9 +291,6 @@ public final class ProviderBuilder {
         /** Source of randomness is {@link XorShift1024Star}. */
         XOR_SHIFT_1024_S(XorShift1024Star.class,
                          long[].class),
-        /** Source of randomness is {@link XorShift1024StarPhi}. */
-        XOR_SHIFT_1024_S_PHI(XorShift1024StarPhi.class,
-                         long[].class),
         /** Source of randomness is {@link TwoCmres}. */
         TWO_CMRES(TwoCmres.class,
                   Integer.class),
@@ -313,7 +310,11 @@ public final class ProviderBuilder {
                 int[].class),
         /** Source of randomness is {@link KISSRandom}. */
         KISS(KISSRandom.class,
-             int[].class);
+             int[].class),
+        /** Source of randomness is {@link XorShift1024StarPhi}. */
+        XOR_SHIFT_1024_S_PHI(XorShift1024StarPhi.class,
+                             long[].class),
+        ;
 
         /** Source type. */
         private final Class<? extends UniformRandomProvider> rng;

Reply via email to