Module « numpy.random »
Classe « MT19937 »
Informations générales
Héritage
builtins.object
BitGenerator
MT19937
Définition
class MT19937(BitGenerator):
Description [extrait de MT19937.__doc__]
MT19937(seed=None)
Container for the Mersenne Twister pseudo-random number generator.
Parameters
----------
seed : {None, int, array_like[ints], SeedSequence}, optional
A seed to initialize the `BitGenerator`. If None, then fresh,
unpredictable entropy will be pulled from the OS. If an ``int`` or
``array_like[ints]`` is passed, then it will be passed to
`SeedSequence` to derive the initial `BitGenerator` state. One may also
pass in a `SeedSequence` instance.
Attributes
----------
lock: threading.Lock
Lock instance that is shared so that the same bit git generator can
be used in multiple Generators without corrupting the state. Code that
generates values from a bit generator should hold the bit generator's
lock.
Notes
-----
``MT19937`` provides a capsule containing function pointers that produce
doubles, and unsigned 32 and 64- bit integers [1]_. These are not
directly consumable in Python and must be consumed by a ``Generator``
or similar object that supports low-level access.
The Python stdlib module "random" also contains a Mersenne Twister
pseudo-random number generator.
**State and Seeding**
The ``MT19937`` state vector consists of a 624-element array of
32-bit unsigned integers plus a single integer value between 0 and 624
that indexes the current position within the main array.
The input seed is processed by `SeedSequence` to fill the whole state. The
first element is reset such that only its most significant bit is set.
**Parallel Features**
The preferred way to use a BitGenerator in parallel applications is to use
the `SeedSequence.spawn` method to obtain entropy values, and to use these
to generate new BitGenerators:
>>> from numpy.random import Generator, MT19937, SeedSequence
>>> sg = SeedSequence(1234)
>>> rg = [Generator(MT19937(s)) for s in sg.spawn(10)]
Another method is to use `MT19937.jumped` which advances the state as-if
:math:`2^{128}` random numbers have been generated ([1]_, [2]_). This
allows the original sequence to be split so that distinct segments can be
used in each worker process. All generators should be chained to ensure
that the segments come from the same sequence.
>>> from numpy.random import Generator, MT19937, SeedSequence
>>> sg = SeedSequence(1234)
>>> bit_generator = MT19937(sg)
>>> rg = []
>>> for _ in range(10):
... rg.append(Generator(bit_generator))
... # Chain the BitGenerators
... bit_generator = bit_generator.jumped()
**Compatibility Guarantee**
``MT19937`` makes a guarantee that a fixed seed and will always produce
the same random integer stream.
References
----------
.. [1] Hiroshi Haramoto, Makoto Matsumoto, and Pierre L'Ecuyer, "A Fast
Jump Ahead Algorithm for Linear Recurrences in a Polynomial Space",
Sequences and Their Applications - SETA, 290--298, 2008.
.. [2] Hiroshi Haramoto, Makoto Matsumoto, Takuji Nishimura, François
Panneton, Pierre L'Ecuyer, "Efficient Jump Ahead for F2-Linear
Random Number Generators", INFORMS JOURNAL ON COMPUTING, Vol. 20,
No. 3, Summer 2008, pp. 385-390.
Constructeur(s)
Liste des attributs statiques
state | <attribute 'state' of 'numpy.random._mt19937.MT19937' objects> |
Attributs statiques hérités de la classe BitGenerator
capsule, cffi, ctypes, lock
Liste des opérateurs
Opérateurs hérités de la classe object
__eq__,
__ge__,
__gt__,
__le__,
__lt__,
__ne__
Liste des méthodes
Toutes les méthodes
Méthodes d'instance
Méthodes statiques
Méthodes dépréciées
Méthodes héritées de la classe BitGenerator
__getstate__, __init_subclass__, __reduce__, __setstate__, __subclasshook__, random_raw
Méthodes héritées de la classe object
__delattr__,
__dir__,
__format__,
__getattribute__,
__hash__,
__reduce_ex__,
__repr__,
__setattr__,
__sizeof__,
__str__
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :