JDK-8259270 : Add getDefault() methods to RandomGenerator
  • Type: CSR
  • Component: core-libs
  • Sub-Component: java.util
  • Priority: P3
  • Status: Closed
  • Resolution: Withdrawn
  • Submitted: 2021-01-05
  • Updated: 2021-01-06
  • Resolved: 2021-01-06
Related Reports
CSR :  
Description
Summary
-------

Introduce methods to simplify the selection of basic RandomGenerators.

Problem
-------

Without using a specific algorithm, the RandomGenerator API recommends that the user should use a query to select an appropriate an algorithm. The queries could be daunting for a user that just wants a basic RandomGenerator. Ex.,

```
RandomGeneratorFactory<RandomGenerator> best = RandomGenerator.all()
    .sorted((f, g) -> Integer.compare(f.stateBits(), g.stateBits()))
    .findFirst()
    .orElseThrow();
```
Solution
--------

Provide methods that return a basic RandomGenerator or RandomGeneratorFactory.

Specification
-------------

```
    /**
     * Returns a {@link RandomGeneratorFactory} meeting the minimal requirement
     * of having an algorithm whose state bits are greater than or equal 64.
     *
     * @implNote  Since algorithms will improve over time, there is no
     * guarantee that this method will return the same algorithm each time.
     *
     * @return a {@link RandomGeneratorFactory}
     */
    static RandomGeneratorFactory<RandomGenerator> getDefaultFactory() {
        return factoryOf("L32X64MixRandom");
    }

    /**
     * Returns a {@link RandomGenerator} meeting the minimal requirement
     * of having an algorithm whose state bits are greater than or equal 64.
     *
     * @implNote  Since algorithms will improve over time, there is no
     * guarantee that this method will return the same algorithm each time.
     *
     * @return a {@link RandomGenerator}
     */
    static RandomGenerator getDefault() {
        return of("L32X64MixRandom");
    }
```