Uploaded image for project: 'Commons RNG'
  1. Commons RNG
  2. RNG-57

CachedUniformRandomProvider for nextBoolean() and nextInt()

VotersWatch issueWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Minor
    • Resolution: Implemented
    • None
    • 1.2
    • core

    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.

      Attachments

        Issue Links

        There are no Sub-Tasks for this issue.

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            Unassigned Unassigned
            aherbert Alex Herbert
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment