From 1633c8deb8f6f41151b39b62689ae3e02ab295bc Mon Sep 17 00:00:00 2001 From: ST-DDT Date: Tue, 12 Nov 2024 09:19:28 +0100 Subject: feat: add initial seed parameter to constructors (#3220) --- src/utils/mersenne.ts | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'src/utils') diff --git a/src/utils/mersenne.ts b/src/utils/mersenne.ts index 315335ab..585f84b5 100644 --- a/src/utils/mersenne.ts +++ b/src/utils/mersenne.ts @@ -1,10 +1,13 @@ import { MersenneTwister19937 } from '../internal/mersenne'; +import { randomSeed } from '../internal/seed'; import type { Randomizer } from '../randomizer'; /** * Generates a MersenneTwister19937 randomizer with 32 bits of precision. * This is the default randomizer used by faker prior to v9.0. * + * @param seed The initial seed to use. Defaults to a random number. + * * @example * import { de, en, generateMersenne32Randomizer, Faker } from '@faker-js/faker'; * @@ -16,10 +19,12 @@ import type { Randomizer } from '../randomizer'; * * @since 8.2.0 */ -export function generateMersenne32Randomizer(): Randomizer { +export function generateMersenne32Randomizer( + seed: number = randomSeed() +): Randomizer { const twister = new MersenneTwister19937(); - twister.initGenrand(Math.ceil(Math.random() * Number.MAX_SAFE_INTEGER)); + twister.initGenrand(seed); return { next(): number { @@ -39,6 +44,8 @@ export function generateMersenne32Randomizer(): Randomizer { * Generates a MersenneTwister19937 randomizer with 53 bits of precision. * This is the default randomizer used by faker starting with v9.0. * + * @param seed The initial seed to use. Defaults to a random number. + * * @example * import { de, en, generateMersenne53Randomizer, Faker } from '@faker-js/faker'; * @@ -50,10 +57,12 @@ export function generateMersenne32Randomizer(): Randomizer { * * @since 9.0.0 */ -export function generateMersenne53Randomizer(): Randomizer { +export function generateMersenne53Randomizer( + seed: number = randomSeed() +): Randomizer { const twister = new MersenneTwister19937(); - twister.initGenrand(Math.ceil(Math.random() * Number.MAX_SAFE_INTEGER)); + twister.initGenrand(seed); return { next(): number { -- cgit v1.2.3