Message367198
| Author |
vstinner |
| Recipients |
mark.dickinson, pitrou, rhettinger, serhiy.storchaka, tim.peters, vstinner |
| Date |
2020年04月24日.16:19:35 |
| SpamBayes Score |
-1.0 |
| Marked as misclassified |
Yes |
| Message-id |
<1587745176.1.0.613237396222.issue40346@roundup.psfhosted.org> |
| In-reply-to |
| Content |
Antoine:
> However, if we want to think about a new subclassing API, it may be worth looking at the recent Numpy changes. Numpy added a new random generator API recently, with a design based on composition rather than inheritance (and also they switched from Mersenne Twister to another underlying PRNG!):
> https://numpy.org/doc/stable/reference/random/index.html
Yeah, sometimes composition is simpler. My BaseRandom base class (PR 19631) can be used with composition indirectly, since all you need is to implemented getrandbits(). Example:
---
from numpy.random import default_rng
import random
class NumpyRandom(random.BaseRandom):
def __init__(self):
self._rng = default_rng()
def getrandbits(self, n):
# FIXME: support n larger than 64 ;-)
return int(self._rng.integers(2 ** n))
gen = NumpyRandom()
print(gen.randint(1, 6))
print(gen.random())
print(gen.randbytes(3))
--- |
|