```{index} single: Math::Random::MT ``` # Math::Random::MT ```{pperl-module-badges} Math::Random::MT ``` The Mersenne Twister pseudo-random number generator, MT19937: a long period (2**19937 - 1), fast, and the same sequence on every platform for the same seed. It is not for cryptography. `Math::Random::MT->new(@seeds)` makes a generator; one seed is a 32-bit integer, several are an array of them, and none takes a seed from perl's own `rand`. `$gen->rand($n)` returns a number in `[0, $n)` (`$n` defaults to 1), `$gen->irand` an integer in `[0, 2**32)`, and `$gen->get_seed` the seed. Imported, `srand`, `rand` and `irand` work on one generator of the module's own, as perl's built-ins do. This is a native implementation of Math::Random::MT 1.17's `MT.xs` and `_mt.c` (Matsumoto and Nishimura's mt19937ar.c); its `Math/Random/MT.pm` is used unchanged. ## Synopsis ```perl use Math::Random::MT; my $gen = Math::Random::MT->new(5489); print $gen->irand, "\n"; # 3499211612, mt19937ar's first output my $die = 1 + int $gen->rand(6); use Math::Random::MT qw(srand rand); srand(42); print rand(10), "\n"; ``` ## Functions ### Generators #### `init` `Math::Random::MT::init()`: a new generator object, not yet seeded; `new` seeds it. #### `genrand` `$gen->genrand`: the next number in `[0, 1)`. #### `genirand` `$gen->genirand`: the next integer in `[0, 2**32)`. ### Seeding #### `init_seed` `$gen->init_seed($seed)`: seed with one 32-bit integer. #### `setup_array` `$gen->setup_array(@seeds)`: seed with an array of 32-bit integers. #### `get_seed` `$gen->get_seed`: the seed it was given with `init_seed`, or 19650218 after `setup_array`.