1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
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';
*
* const randomizer = generateMersenne32Randomizer();
* randomizer.seed(42);
* // Share the same randomizer between multiple instances
* const customFaker1 = new Faker({ locale: de, randomizer });
* const customFaker2 = new Faker({ locale: en, randomizer });
*
* @since 8.2.0
*/
export function generateMersenne32Randomizer(
seed: number = randomSeed()
): Randomizer {
const twister = new MersenneTwister19937(seed);
return {
next(): number {
return twister.nextF32();
},
seed(seed: number | number[]): void {
twister.seed(seed);
},
};
}
/**
* 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';
*
* const randomizer = generateMersenne53Randomizer();
* randomizer.seed(42);
* // Share the same randomizer between multiple instances
* const customFaker1 = new Faker({ locale: de, randomizer });
* const customFaker2 = new Faker({ locale: en, randomizer });
*
* @since 9.0.0
*/
export function generateMersenne53Randomizer(
seed: number = randomSeed()
): Randomizer {
const twister = new MersenneTwister19937(seed);
return {
next(): number {
return twister.nextF53();
},
seed(seed: number | number[]): void {
twister.seed(seed);
},
};
}
|