bpo-40282: Allow random.getrandbits(0)#19539
Conversation
|
This makes shuffle() about 6% slower: python -m timeit -r11 -s 'from random import shuffle' -s 's=list(range(1000))' 'shuffle(s)' |
Sorry, something went wrong.
vstinner
left a comment
There was a problem hiding this comment.
random.Random has a surprising API. The base class is Mersenne Twister which implements getrandbits(). Inheritance is non-trivial. Does your change work if a subclass implements _randbelow()? What if it implements random()? See Random.__init_subclass__().
Sorry, something went wrong.
|
If the subclass implements |
Sorry, something went wrong.
Co-Authored-By: Serhiy Storchaka <storchaka@gmail.com>
Co-Authored-By: Victor Stinner <vstinner@python.org>
9ccb7bc to
3b86eb8
Compare
April 17, 2020 16:26
|
I rebased and applied two trivial changes from reviewing. Will merge if CI is green. Thanks everyone! |
Sorry, something went wrong.
3b86eb8 to
c4673f0
Compare
April 17, 2020 17:11
I created bpo-40346: "Redesign random.Random class inheritance". |
Sorry, something went wrong.
* master: (1985 commits) bpo-40179: Fix translation of #elif in Argument Clinic (pythonGH-19364) bpo-35967: Skip test with `uname -p` on Android (pythonGH-19577) bpo-40257: Improve help for the typing module (pythonGH-19546) Fix two typos in multiprocessing (pythonGH-19571) bpo-40286: Use random.randbytes() in tests (pythonGH-19575) bpo-40286: Makes simpler the relation between randbytes() and getrandbits() (pythonGH-19574) bpo-39894: Route calls from pathlib.Path.samefile() to os.stat() via the path accessor (pythonGH-18836) bpo-39897: Remove needless `Path(self.parent)` call, which makes `is_mount()` misbehave in `Path` subclasses. (pythonGH-18839) bpo-40282: Allow random.getrandbits(0) (pythonGH-19539) bpo-40302: UTF-32 encoder SWAB4() macro use a|b rather than a+b (pythonGH-19572) bpo-40302: Replace PY_INT64_T with int64_t (pythonGH-19573) bpo-40286: Add randbytes() method to random.Random (pythonGH-19527) bpo-39901: Move `pathlib.Path.owner()` and `group()` implementations into the path accessor. (pythonGH-18844) bpo-40300: Allow empty logging.Formatter.default_msec_format. (pythonGH-19551) bpo-40302: Add pycore_byteswap.h header file (pythonGH-19552) bpo-40287: Fix SpooledTemporaryFile.seek() return value (pythonGH-19540) Minor modernization and readability improvement to the tokenizer example (pythonGH-19558) bpo-40294: Fix _asyncio when module is loaded/unloaded multiple times (pythonGH-19542) Fix parameter names in assertIn() docs (pythonGH-18829) bpo-39793: use the same domain on make_msgid tests (python#18698) ...
https://bugs.python.org/issue40282