You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Alex D Herbert (JIRA)" <ji...@apache.org> on 2018/09/24 13:49:00 UTC

[jira] [Created] (RNG-57) CachedUniformRandomProvider for nextBoolean() and nextInt()

Alex D Herbert created RNG-57:
---------------------------------

             Summary: CachedUniformRandomProvider for nextBoolean() and nextInt()
                 Key: RNG-57
                 URL: https://issues.apache.org/jira/browse/RNG-57
             Project: Commons RNG
          Issue Type: Improvement
          Components: sampling
    Affects Versions: 1.2
            Reporter: Alex D Herbert


Implement a wrapper around a {{UniformRandomProvider}} that can cache the underlying source of random bytes for use in the methods {{nextBoolean()}} and {{nextInt()}} (in the case of {{LongProvider}}). E.g.
{code:java}
LongProvider provider = RandomSource.create(RandomSource.SPLIT_MIX_64);
CachedLongProvider rng = new CachedLongProvider(provider);
// Uses cached nextLong() 64 times
rng.nextBoolean();
// Uses cached nextLong() twice
rng.nextInt();

IntProvider provider = RandomSource.create(RandomSource.KISS);
CachedIntProvider rng2 = new CachedIntProvider(provider);
// Uses cached nextInt() 32 times
rng2.nextBoolean();

// This could be wrapped by a factory method:
UniformRandomProvider rng = CachedUniformRandomProviderFactory.wrap(
        // Any supported source: IntProvider or LongProvider
        RandomSource.create(RandomSource...));
{code}
The implementation should be speed tested to determine the benefit for {{nextBoolean()}} and if {{nextInt()}} can be improved for {{LongProviders}}.



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