"""
This type stub file was generated by pyright.
"""

from .vtkRandomSequence import vtkRandomSequence

class vtkMersenneTwister(vtkRandomSequence):
    """
    vtkMersenneTwister - Generator for Mersenne Twister pseudorandom
    numbers
    
    Superclass: vtkRandomSequence
    
    vtkMersenneTwister is an implementation of the Mersenne Twister
    pseudorandom number generator. The VTK class is simply a wrapper
    around an implementation written by M. Matsumoto, T. Nishimura and M.
    Saito, whose source code can be found at
    http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/DC/dc.html.
    
    This implementation of the Mersenne Twister facilitates the
    generation and query from multiple independent pseudorandom
    sequences. Independent sequences are identified by a unique
    vtkMersenneTwister::SequenceId, which is either generated upon
    request or passed into the initialization method. This id is factored
    into the initialization of the Mersenne Twister's initial state, so
    two sequences with the same seed and different sequence ids will
    produce different results. Once a sequence is initialized with an
    associated sequence id, this id is used to obtain values from the
    sequence.
    
    This class, besides generating random sequences in sequential order,
    can also populate a double array of specified size with a random
    sequence. It will do so using one or more threads depending on the
    number of values requested to generate.
    
    @warning
    This class has been threaded with vtkMultiThreader. The amount of
    work each thread performs is controlled by the #define
    VTK_MERSENNE_CHUNK.
    """
    def GetNumberOfGenerationsFromBase(self, string):
        """
        V.GetNumberOfGenerationsFromBase(string) -> int
        C++: vtkIdType GetNumberOfGenerationsFromBase(const char *type)
            override;
        
        Standard methods for instantiation, type information, and
        printing.
        """
        ...
    
    def GetNumberOfGenerationsFromBaseType(self, string):
        """
        V.GetNumberOfGenerationsFromBaseType(string) -> int
        C++: static vtkIdType GetNumberOfGenerationsFromBaseType(
            const char *type)
        
        Standard methods for instantiation, type information, and
        printing.
        """
        ...
    
    def GetValue(self, p_int):
        """
        V.GetValue(int) -> float
        C++: virtual double GetValue(SequenceId id)
        V.GetValue() -> float
        C++: double GetValue() override;
        
        Current value
        \post unit_range: result>=0.0 && result<=1.0
        """
        ...
    
    def Initialize(self, p_int):
        """
        V.Initialize(int)
        C++: void Initialize(vtkTypeUInt32 seed) override;
        
        Satisfy general API of vtkRandomSequence superclass. Initialize
        the sequence with a seed.
        """
        ...
    
    def InitializeNewSequence(self, p_int, p_int_1):
        """
        V.InitializeNewSequence(int, int) -> int
        C++: SequenceId InitializeNewSequence(vtkTypeUInt32 seed,
            int p=521)
        
        Initialize a new Mersenne Twister sequence, given a) a and b) a
        Mersenne exponent (p s.t. 2^p-1 is a Mersenne prime). If
        
        is not a usable Mersenne exponent, its value is used to pick one
        from a list. The return value is the id for the generated
        sequence, which is used as a key to access values of the
        sequence.
        """
        ...
    
    def InitializeSequence(self, p_int, p_int_1, p_int_2):
        """
        V.InitializeSequence(int, int, int)
        C++: void InitializeSequence(SequenceId id, vtkTypeUInt32 seed,
            int p=521)
        
        Initialize a sequence as in InitializeNewSequence(), but
        additionally pass an id to associate with the new sequence. If a
        sequence is already associated with this id, a warning is given
        and the sequence is reset using the given parameters.
        """
        ...
    
    def IsA(self, string):
        """
        V.IsA(string) -> int
        C++: vtkTypeBool IsA(const char *type) override;
        
        Standard methods for instantiation, type information, and
        printing.
        """
        ...
    
    def IsTypeOf(self, string):
        """
        V.IsTypeOf(string) -> int
        C++: static vtkTypeBool IsTypeOf(const char *type)
        
        Standard methods for instantiation, type information, and
        printing.
        """
        ...
    
    def NewInstance(self):
        """
        V.NewInstance() -> vtkMersenneTwister
        C++: vtkMersenneTwister *NewInstance()
        
        Standard methods for instantiation, type information, and
        printing.
        """
        ...
    
    def Next(self, p_int):
        """
        V.Next(int)
        C++: virtual void Next(SequenceId id)
        V.Next()
        C++: void Next() override;
        
        Move to the next number in random sequence . If no sequence is
        associated with this id, a warning is given and a sequence is
        generated with default values.
        """
        ...
    
    def SafeDownCast(self, vtkObjectBase):
        """
        V.SafeDownCast(vtkObjectBase) -> vtkMersenneTwister
        C++: static vtkMersenneTwister *SafeDownCast(vtkObjectBase *o)
        
        Standard methods for instantiation, type information, and
        printing.
        """
        ...
    
    def __delattr__(self, *args, **kwargs):
        """ Implement delattr(self, name). """
        ...
    
    def __getattribute__(self, *args, **kwargs):
        """ Return getattr(self, name). """
        ...
    
    def __init__(self, *args, **kwargs) -> None:
        ...
    
    @staticmethod
    def __new__(*args, **kwargs):
        """ Create and return a new object.  See help(type) for accurate signature. """
        ...
    
    def __repr__(self, *args, **kwargs):
        """ Return repr(self). """
        ...
    
    def __setattr__(self, *args, **kwargs):
        """ Implement setattr(self, name, value). """
        ...
    
    def __str__(self, *args, **kwargs) -> str:
        """ Return str(self). """
        ...
    
    __this__ = ...
    __dict__ = ...
    __vtkname__ = ...


