def __init__(
        self,
        seed: int | None = None,
        forceBuild: bool = False,
    ) -> None:
        """
        BitGenerator(seed=None)

        Base Class for generic BitGenerators, which provide a stream
        of random bits based on different algorithms. Must be overridden.

        Parameters
        ----------
        seed : {int, None}, optional
            A seed to initialize the `BitGenerator`. If None, then fresh,
            unpredictable entropy will be pulled from the OS.

        See Also
        --------
        numpy.random.BitGenerator

        Availability
        ------------
        Multiple GPUs, Multiple CPUs
        """
        if type(self) is BitGenerator:
            raise NotImplementedError(
                "BitGenerator is a base class and cannot be instantized"
            )

        self.seed = seed or time.perf_counter_ns()
        self.flags = 0
        self.handle = runtime.bitgenerator_create(
            self.generatorType, seed, self.flags, forceBuild
        )

        BitGenerator(seed=None)

        Base Class for generic BitGenerators, which provide a stream
        of random bits based on different algorithms. Must be overridden.

        Parameters
        ----------
        seed : {int, None}, optional
            A seed to initialize the `BitGenerator`. If None, then fresh,
            unpredictable entropy will be pulled from the OS.

        See Also
        --------
        numpy.random.BitGenerator

        Availability
        ------------
        Multiple GPUs, Multiple CPUs
        
cupynumeric/random/_bitgenerator.py