Re: Re: [RFC] [VOTE] Random Extension 5.x

From: Date: Thu, 16 Jun 2022 13:37:44 +0000
Subject: Re: Re: [RFC] [VOTE] Random Extension 5.x
References: 1 2 3  Groups: php.internals 
Request: Send a blank email to internals+get-117966@lists.php.net to get a copy of this message
Hi On 6/16/22 14:52, Tim Düsterhus wrote:
(3) Naming of PCG64: I must admit that the fact that PCG is a full family of similar, but not identical generators is one thing that made me (and still makes me) prefer the xoshiro family which has clearer names for its variants. It was also pretty hard to find the PCG definitions on the PCG website, but I believe that it refers to this: https://www.pcg-random.org/using-pcg-c.html#low-level-api? In that case PCG64S would be consistent with the upstream high level API name. I am not sure if Pcg64s would be more readable, though. It would definitely need a good explanation in the documentation which exact variant it is, though.
I've now had a look at the Paper [1], because I wanted to find out what the various bits and pieces within the full oneseq-128-xsl-rr-64 name mean and in the paper I came across section "6.3 Specific Implementations" which notes:
The library provides named generators based on their properties, not their underlying implementations (e.g., pcg32_unique for a general-purpose 32-bit generator with a unique stream). That way, when future family members that perform even better are discovered and added (hopefully due to the discoveries of others), users can switch seamlessly over to them.
This implies that the official Pcg64s name might refer to a different implementation in the future. This makes it hard for PHP to keep the compatibility guarantee that a specific engine will always refer to a specific well-defined RNG. This implies that the engine needs to be named "PcgOneseq128XslRr64" to accurately describe the implementation. This - of course - is absolutely unwieldy. Note sure what the best course of action is here. [1] https://www.pcg-random.org/pdf/hmc-cs-2014-0905.pdf Best regards Tim Düsterhus

« previous php.internals (#117966) next »