[ 
https://issues.apache.org/jira/browse/RNG-98?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alex D Herbert resolved RNG-98.
-------------------------------
    Resolution: Implemented

In master.

 

> LongJumpableUniformRandomProvider
> ---------------------------------
>
>                 Key: RNG-98
>                 URL: https://issues.apache.org/jira/browse/RNG-98
>             Project: Commons RNG
>          Issue Type: New Feature
>          Components: client-api, core
>    Affects Versions: 1.3
>            Reporter: Alex D Herbert
>            Assignee: Alex D Herbert
>            Priority: Major
>             Fix For: 1.3
>
>          Time Spent: 50m
>  Remaining Estimate: 0h
>
> The {{JumpableUniformRandomProvider}} allows the state of a generator to be 
> advanced in a large jump of *{{n}}* steps to allow a series of generators to 
> be created at regularly spaced intervals. These can be used in parallel 
> computations without overlap for at least *{{n}}* outputs of the generator.
> Extend the interface to allow a larger jump:
> {code:java}
> /**
>  * Applies to generators that can be advanced a very large number of 
>  * steps of the output sequence in a single operation.
>  */
> public interface LongJumpableUniformRandomProvider
>     extends JumpableUniformRandomProvider {
>     /**
>      * Creates a copy of the UniformRandomProvider and advances the
>      * state of the copy. The state of the current instance is not altered. 
>      * The state of the copy will be advanced an equivalent of {@code m}
>      * sequential calls to a method that updates the state of the provider.
>      *
>      * <p>Note: The output will not overlap with {@code m / n} sequentially
>      * created instances of the {@link #jump()} method where {@code n} is the
>      * jump length of the {@link #jump()} method.</p>
>      *
>      * @return the copy with an advanced state
>      */
>     LongJumpableUniformRandomProvider longJump();
> }
> {code}
> This interface is to support a tiered parallel computation. The top tier is 
> created using long jumps. Each top tier generator can create a large number 
> of generators using the jump method.
> A suggestion for how to document an implementation is:
> {code:java}
> public class LongJumpableRNG implements LongJumpableUniformRandomProvider {
>     /**
>      * {@inheritDoc}
>      *
>      * <p>The jump size {@code m} is the equivalent of 
> <pre>2<sup>64</sup></pre>
>      * calls to {@link UniformRandomProvider#nextLong() nextLong()}. The 
> output
>      * will not overlap with <pre>2<sup>32</sup></pre> sequentially created
>      * instances of the {@link #jump()} method.</p>
>      */
>     @Override
>     public LongJumpableUniformRandomProvider longJump() {
>         return ...;
>     }
>     // etc.
> }
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to