Alex Herbert created RNG-187:
--------------------------------

             Summary: Performance improvements for an array shuffle
                 Key: RNG-187
                 URL: https://issues.apache.org/jira/browse/RNG-187
             Project: Commons RNG
          Issue Type: New Feature
          Components: sampling
    Affects Versions: 1.6
            Reporter: Alex Herbert


Improve the performance of array shuffling by generation of multiple indices in 
a range [0, n) from a single sample from a random source.

The current UniformRandomProvider method to sample an integer in a range [0, n) 
uses a rejection method based on multiplication with a single use of a slow 
modulus operator if rejection is required. The author of that method has 
extended it to allow generation of multiple integers from 2 or more ranges from 
the same random sample.

When applied to a shuffle algorithm the speed-up can be significant, typically 
in the range of up to 2-fold for smaller arrays depending on the speed of the 
random generator; slower generators see a greater speed-up.

The method is described in:

{noformat}
Nevin Brackett-Rozinsky, Daniel Lemire,
Batched Ranged Random Integer Generation,
Software: Practice and Experience (to appear)
{noformat}
See [arXiv:2408.06213M|https://arxiv.org/abs/2408.06213].

See also [Daniel Lemire Blog: Faster random integer generation with 
batching|https://lemire.me/blog/2024/08/17/faster-random-integer-generation-with-batching/]

 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to