Instead of using np.random, the top of the method should do `random=check_random_state(self.random_state)`, and then using that instance of the RNG. With the default argument of `self.random_state=None`, it will be the same. But this lets the user control the seed. (I don't remember if it was imported in this file, but `check_random_state` is in `sklearn.utils`)