Re: Faster bounded random integers

"Richard O'Keefe" <[email protected]>
Newsgroups gmane.comp.lang.erlang.general
Message-ID <CABcYAdL9HRk+WDUuzDtVa9v=xUk6WhzBdh9whFha=B-zYAXK0w@mail.gmail.com>
I am grateful for these references.  Not having had time to read them yet,
I wonder if this applies equally well to large integers?

On Tue, 14 Sept 2021 at 12:28, Richard O'Keefe <[email protected]> wrote:
>
> On Tue, 14 Sept 2021 at 03:51, Thomas Depierre
> <[email protected]> wrote:
> >
> > Generating an unbiased random integer in a range 0..N where N is not a power of two requires rejection sampling.
> >
> > `rand` uses the "Java" algorithm for this as far as i can tell (could not find a better name). https://github.com/erlang/otp/blob/master/lib/stdlib/src/rand.erl#L150
> >
> > Daniel Lemire presents a good analysis of the current field in https://arxiv.org/abs/1805.10941 and then propose a "near divisionless" algorithm that should provide speedup. This could already provide interesting results.
> >
> > A few days ago, the Swift team came up with an algorithm that:
> > - never divides
> > - avoids rejection sampling entirely
> > - achieves a theoretically optimal bound on the amount of randomness consumed to generate a sample
> > - delivers actual performance improvements for most real cases
> >
> > https://github.com/apple/swift/pull/39143
> >
> > Am I understanding this right ? As far as i can tell, our expert is Raimo Niskanen.
> >
> > The EEF would be interested in funding me trying to explore the potential gains and possibly implement it for `rand`. Would this be of interest ? I expect the maintenance to be relatively low, this is not a lot of SLOC
> >
> > Thomas Depierre
> > Schedule a meeting with me
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.