On Mon, May 29, 2023, at 08:05, Máté Kocsis wrote:
> Hi Everyone,
> 
> Together with multiple authors, we'd like to start the discussion of the
> usual
> deprecation RFC for the subsequent PHP version. You can find the link below:
> https://wiki.php.net/rfc/deprecations_php_8_3
> 
> Regards:
> Máté Kocsis

I don't think we should deprecate mt_rand().

There are plenty of use-cases that require neither a seedable (predictable) RNG 
sequence, nor a cryptographically-secure RNG. For those use-cases (and 
especially one-off uses), mt_rand() is perfect, and going through Randomizer is 
an entirely unnecessary complication.

I think I could get on board with deprecating srand/mt_srand to make 
rand/mt_rand non-seedable, directing people who need a seedable RNG to use 
Randomizer, which is much better suited to that use-case. However, we should 
retain rand/mt_rand themselves for non-seeded use-cases.

With srand/mt_srand removed, we also would not have to produce any particular 
sequence, and would be free to switch the internal RNG to something other than 
Mt19937.

The same extends to array_rand(), shuffle() and str_shuffle() -- in fact the 
RFC is missing an important voting option, which is "leave them alone", or 
rather "convert to some non-seedable non-CSPRNG" if you prefer.

Regards,
Nikita

Reply via email to