[Numpy-discussion] Question about optimizing random_standard_normal

camel-cdr at protonmail.com camel-cdr at protonmail.com
Sat Feb 6 09:49:07 EST 2021


‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Saturday, February 6, 2021 3:29 PM, Robert Kern <robert.kern at gmail.com> wrote:

> On Sat, Feb 6, 2021 at 7:27 AM <camel-cdr at protonmail.com> wrote:
>
>>> Well, I can tell you why it needs to be backward compatible! I use random numbers fairly frequently, and to unit test them I set a specific seed and then make sure I get the same answers.
>>
>> Hmm, I guess that makes sense. I tried to adjust my algorithms to do the same thing with the same bit's as the original one, but I couldn't get it to work.
>
> To be clear, this is not our backwards compatibility policy for the methods that you have modified. Our policy is spelled out here:
>
> https://numpy.org/neps/nep-0019-rng-policy.html
>
> The TestRandomDist suite of tests were adapted from the older RandomState (which is indeed frozen and not allowed to change algorithms). It's a mix of correctness tests that are valid regardless of the precise algorithm (does this method reject invalid arguments? do degenerate arguments yield the correct constant value?) and actual "has this algorithm changed unexpectedly?" tests. The former are the most valuable, but the latter are useful for testing in cross-platform contexts. Compilers and different CPUs can do naughty things sometimes, and we want the cross-platform differences to be minimal. When you do change an algorithm implementation for Generator, as you have done, you are expected to do thorough tests (offline, not in the unit tests) that it is correctly sampling from the target probability distribution, then once satisfied, change the hard-coded values in TestRandomDist to match whatever you are generating.
>
> --
> Robert Kern

Ok, cool, that basically explains a lot.

> When you do change an algorithm implementation for Generator, as you have done, you are expected to do thorough tests (offline, not in the unit tests) that it is correctly sampling from the target probability distribution, then once satisfied, change the hard-coded values in TestRandomDist to match whatever you are generating.

I'm probably not versed enough in statistics to do thorough testing. I used the testing in https://www.seehuhn.de/pages/ziggurat and plotting histograms to verify correctness, that probably won't be sufficient.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.python.org/pipermail/numpy-discussion/attachments/20210206/89700e86/attachment-0001.html>


More information about the NumPy-Discussion mailing list