<commit_before>=======================================
NEP 19 — Random Number Generator Policy
=======================================

:Author: <NAME> <<EMAIL>>
:Status: Accepted
:Type: Standards Track
:Created: 2018-05-24
:Updated: 2019-05-21
:Resolution: https://mail.python.org/pipermail/numpy-discussion/2018-July/078380.html

Abstract
--------

For the past decade, NumPy has had a strict backwards compatibility policy for
the number stream of all of its random number distributions.  Unlike other
numerical components in ``numpy``, which are usually allowed to return
different when results when they are modified if they remain correct, we have
obligated the random number distributions to always produce the exact same
numbers in every version.  The objective of our stream-compatibility guarantee
was to provide exact reproducibility for simulations across numpy versions in
order to promote reproducible research.  However, this policy has made it very
difficult to enhance any of the distributions with faster or more accurate
algorithms.  After a decade of experience and improvements in the surrounding
ecosystem of scientific software, we believe that there are now better ways to
achieve these objectives.  We propose relaxing our strict stream-compatibility
policy to remove the obstacles that are in the way of accepting contributions
to our random number generation capabilities.
<commit_msg>NEP: move 'NEP 29 random' from Accepted to Final<commit_after>=======================================
NEP 19 — Random Number Generator Policy
=======================================

:Author: <NAME> <<EMAIL>>
:Status: Final
:Type: Standards Track
:Created: 2018-05-24
:Updated: 2019-05-21
:Resolution: https://mail.python.org/pipermail/numpy-discussion/2018-July/078380.html

Abstract
--------

For the past decade, NumPy has had a strict backwards compatibility policy for
the number stream of all of its random number distributions.  Unlike other
numerical components in ``numpy``, which are usually allowed to return
different when results when they are modified if they remain correct, we have
obligated the random number distributions to always produce the exact same
numbers in every version.  The objective of our stream-compatibility guarantee
was to provide exact reproducibility for simulations across numpy versions in
order to promote reproducible research.  However, this policy has made it very
difficult to enhance any of the distributions with faster or more accurate
algorithms.  After a decade of experience and improvements in the surrounding
ecosystem of scientific software, we believe that there are now better ways to
achieve these objectives.  We propose relaxing our strict stream-compatibility
policy to remove the obstacles that are in the way of accepting contributions
to our random number generation capabilities.

{'fraction_non_alphanumeric': 0.09978991596638656, 'fraction_numerical': 0.02030812324929972, 'mean_word_length': 5.363028953229398, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4310419', 'n_tokens_mistral': 702, 'n_tokens_neox': 623, 'n_words': 366}