我需要具有重置能力的独立随机生成器实例
对于Python的内置随机生成器,我编写了以下类,这些类足以满足我的需要(如果您有更好的实现,请告诉我):
from random import Random
class PyPRNG(Random):
def __init__(self, seed=None):
super().__init__(seed)
self._state = self.getstate()
def reset(self):
self.setstate(self._state)
>>> a = PyPRNG(2021)
>>> a.random()
0.8363375023320742
>>> a.random()
0.8583024042081875
>>> a.reset()
>>> a.random()
0.8363375023320742
现在,我想玩numpy的PRNG
我不确定如何实施重置SeedSequence
对我来说不是很清楚。
最后我做到了:
from numpy.random import Generator, MT19937, PCG64, Philox, SFC64
class NumpyPRNG(Generator):
def __init__(self, seed=None, bit_generator=MT19937):
_bit_generator = bit_generator(seed)
self._state = _bit_generator.state
super().__init__(_bit_generator)
def reset(self):
self.bit_generator.state = self._state.copy()
>>> b = NumpyPRNG(2021, Philox)
>>> b.random()
0.2934718429185965
>>> b.random()
0.6752607814067463
>>> b.reset()
>>> b.random
0.2934718429185965
这是可行的,但也许你能给我指一个更好的解决方案
目前没有回答
相关问题 更多 >
编程相关推荐