Details
-
Improvement
-
Status: Closed
-
Minor
-
Resolution: Implemented
-
None
Description
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.
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...));
The implementation should be speed tested to determine the benefit for nextBoolean() and if nextInt() can be improved for LongProviders.