UNPKG

@technobuddha/library

Version:
52 lines (51 loc) 1.99 kB
/** * 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; }