@technobuddha/library
Version:
A large library of useful functions
52 lines (51 loc) • 1.99 kB
TypeScript
/**
* Implements the Mersenne Twister pseudorandom number generator (MT19937).
*
* The Mersenne Twister is a widely used PRNG known for its long period (2^19937−1),
* high performance, and high-quality randomness. This class provides methods to seed
* the generator and produce random numbers in various formats and intervals.
* @remarks
* - The generator can be seeded with a single number or an array of numbers.
* - Methods are provided to generate 32-bit and 31-bit integers, as well as floating-point numbers
* in different intervals.
* - This implementation is based on the original C code by Makoto Matsumoto and Takuji Nishimura.
*
* @example
* ```typescript
* const mt = new MersenneTwister(1234);
* mt.genrandInt32(); // 1982695502
* mt.genrandReal1(); // 0.33979119391641377
* mt.genrandReal2(); // 0.006705045932903886
* mt.genrandRes53(); // 0.489361593755425
* ```
*
* @see https://en.wikipedia.org/wiki/Mersenne_Twister
* @see http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html
* @group Random
* @category Number Generation
*/
export declare class MersenneTwister {
private mti;
private mt;
constructor(seed?: number | number[]);
/**
* Sets the seed for the random number generator.
*/
setSeed(seed: number | number[]): void;
/** initialize with a seed */
initGenrand(seed: number): void;
/** initialize with array */
initByArray(key: number[]): void;
/** generates a random number on [0,0xffffffff]-interval */
genrandInt32(): number;
/** generates a random number on [0,0x7fffffff]-interval */
genrandInt31(): number;
/** generates a random number on [0,1]-real-interval */
genrandReal1(): number;
/** generates a random number on [0,1)-real-interval */
genrandReal2(): number;
/** generates a random number on (0,1)-real-interval */
genrandReal3(): number;
/** generates a random number on [0,1) with 53-bit resolution*/
genrandRes53(): number;
}