Re: [RFC] Random Extension 3.0
| From: | Nikita Popov | Date: | Tue, 07 Sep 2021 08:28:19 +0000 |
| Subject: | Re: [RFC] Random Extension 3.0 | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-115982@lists.php.net to get a copy of this message | ||
On Thu, Sep 2, 2021 at 5:10 PM Go Kudo <zeriyoshi@gmail.com> wrote:
> Hi Internals.
>
> Expanded from the previous RFC and changed it to an RFC that organizes the
> whole PHP random number generator. Also, the target version has been
> changed to 8.2.
>
> https://wiki.php.net/rfc/rng_extension
> https://github.com/php/php-src/pull/7453
>
> Hopefully you will get some good responses.
>
This RFC currently tries to keep some semblance of compatibility with the
existing mt_rand() algorithm by retaining the same implementation for
mapping the raw random number stream into a range. However, the algorithm
we use for that is not exactly state of the art and requires two full-width
divisions at minimum. There are more efficient scaling algorithms based on
fixed-point multiplication, which are "nearly divisionless" (
https://arxiv.org/pdf/1805.10941.pdf). The
variant at
https://github.com/apple/swift/pull/39143 is
entirely divisionless.
Doing this would improve performance (though I'm not sure by how much --
maybe once we add up our call overhead, it isn't important anymore?) but it
would provide a different sequence than mt_rand(). Something we might want
to consider.
Regards,
Nikita