'Setup the random number generator(s) and store the state
in self.init_rng_state.
Arguments:
seed (int or None): RNG seed, if the seed is None,
then a seed will be randomly chosen
Returns:
np.random.RandomState: numpy RNG'

@abc.abstractmethod
def gen_rng(self, seed=None):

    raise NotImplementedError()
