Re: [PATCH] random: use rejection sampling for uniform bounded random integers

From: Eric Biggers
Date: Mon Oct 17 2022 - 14:27:38 EST


On Sun, Oct 16, 2022 at 08:37:53PM -0600, Jason A. Donenfeld wrote:
> In order to be efficient, we implement a kernel-specific variant of
> Daniel Lemire's algorithm from "Fast Random Integer Generation in an
> Interval", linked below. The kernel's variant takes advantage of
> constant folding to avoid divisions entirely in the vast majority of
> cases, works on both 32-bit and 64-bit architectures, and requests a
> minimal amount of bytes from the RNG.
>
> Link: https://arxiv.org/pdf/1805.10941.pdf

Thanks for doing this! Your code looks correct, but it was hard for me to
understand until I read the paper that is linked to. Could you include a brief
comment in the code that explains the algorithm? Also, though the code looks
correct, I assume that you've also explicitly tested that each of the four code
paths produce uniform random numbers as intended?

- Eric