Details
-
Task
-
Status: Open
-
Minor
-
Resolution: Unresolved
-
1.3
-
None
-
None
Description
JEP 356 specifies an enhancement to the random number generators. This is targeted to JDK 17.
JEP 356: Enhanced Pseudo-Random Number Generators
The enhancement will add interfaces to the JDK for random number generation:
- SplittableRandomGenerator extends RandomGenerator and also provides
methods named split and splits. Splittability allows the user to spawn a new RandomGenerator from an existing RandomGenerator that will generally produce statistically independent results.
- JumpableRandomGenerator extends RandomGenerator and also provides
methods named jump and jumps. Jumpability allows a user to jump ahead a moderate number of draws.
- LeapableRandomGenerator extends RandomGenerator and also provides
methods named leap and leaps. Leapability allows a user to jump ahead a large number of draws.
- ArbitrarilyJumpableRandomGenerator extends LeapableRandomGenerator and also provides additional variations of jump and jumps that allow an arbitrary jump distance to be specified.
The specification describes the development of abstract classes that would allow different algorithms to be easily implemented by developers and used with a Java application through a common interface. This would replicate the functionality of the Common RNG API and core modules within the JDK.
The JDK interfaces should be compared with the current client API in Commons RNG with the aim to assess:
- Compatibility
- Potential to back-port functionality
JEP 356 also mentions the implementation of the LXM family of RNGs and a change to the algorithm used by SplittableRandom to address two weaknesses identified in 2016. These could be included in the current codebase pending license compatibility checks.
Attachments
Issue Links
- relates to
-
RNG-168 LXM family of random number generators
- Closed
-
RNG-176 Enhance the UniformRandomProvider interface with extra methods and default implementations
- Closed
-
RNG-178 Add stream support to JumpableUniformRandomProvider
- Closed
-
RNG-151 Modified Ziggurat algorithm for normal and exponential sampling
- Closed