src/java.base/share/classes/java/util/SplittableRandom.java
branchJDK-8193209-branch
changeset 57547 56cbdc3ea079
parent 57442 4b19f34bbe1b
equal deleted inserted replaced
57546:1ca1cfdcb451 57547:56cbdc3ea079
    24  */
    24  */
    25 package java.util;
    25 package java.util;
    26 
    26 
    27 import java.math.BigInteger;
    27 import java.math.BigInteger;
    28 import java.util.concurrent.atomic.AtomicLong;
    28 import java.util.concurrent.atomic.AtomicLong;
    29 import java.util.random.AbstractSplittableRNG;
    29 import java.util.random.RandomGenerator.SplittableGenerator;
    30 import java.util.random.RNGSupport;
    30 import java.util.random.RandomSupport;
    31 import java.util.random.SplittableRNG;
    31 import java.util.random.RandomSupport.AbstractSplittableGenerator;
    32 
    32 
    33 /**
    33 /**
    34  * A generator of uniform pseudorandom values applicable for use in
    34  * A generator of uniform pseudorandom values applicable for use in
    35  * (among other contexts) isolated parallel computations that may
    35  * (among other contexts) isolated parallel computations that may
    36  * generate subtasks. Class {@code SplittableRandom} supports methods for
    36  * generate subtasks. Class {@code SplittableRandom} supports methods for
    80  *
    80  *
    81  * @author  Guy Steele
    81  * @author  Guy Steele
    82  * @author  Doug Lea
    82  * @author  Doug Lea
    83  * @since   1.8
    83  * @since   1.8
    84  */
    84  */
    85 public final class SplittableRandom extends AbstractSplittableRNG {
    85 public final class SplittableRandom extends AbstractSplittableGenerator {
    86 
    86 
    87     /*
    87     /*
    88      * Implementation Overview.
    88      * Implementation Overview.
    89      *
    89      *
    90      * This algorithm was inspired by the "DotMix" algorithm by
    90      * This algorithm was inspired by the "DotMix" algorithm by
   214     }
   214     }
   215 
   215 
   216     /**
   216     /**
   217      * The seed generator for default constructors.
   217      * The seed generator for default constructors.
   218      */
   218      */
   219     private static final AtomicLong defaultGen = new AtomicLong(RNGSupport.initialSeed());
   219     private static final AtomicLong defaultGen = new AtomicLong(RandomSupport.initialSeed());
   220 
   220 
   221     /* ---------------- public methods ---------------- */
   221     /* ---------------- public methods ---------------- */
   222 
   222 
   223     /**
   223     /**
   224      * Creates a new SplittableRandom instance using the specified
   224      * Creates a new SplittableRandom instance using the specified
   261      */
   261      */
   262     public SplittableRandom split() {
   262     public SplittableRandom split() {
   263         return new SplittableRandom(nextLong(), mixGamma(nextSeed()));
   263         return new SplittableRandom(nextLong(), mixGamma(nextSeed()));
   264     }
   264     }
   265 
   265 
   266     public SplittableRandom split(SplittableRNG source) {
   266     public SplittableRandom split(SplittableGenerator source) {
   267         return new SplittableRandom(source.nextLong(), mixGamma(source.nextLong()));
   267         return new SplittableRandom(source.nextLong(), mixGamma(source.nextLong()));
   268     }
   268     }
   269 
   269 
   270     /**
   270     /**
   271      * Returns a pseudorandom {@code int} value.
   271      * Returns a pseudorandom {@code int} value.