equal
deleted
inserted
replaced
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. |