aboutsummaryrefslogtreecommitdiff
path: root/src/internal
diff options
context:
space:
mode:
Diffstat (limited to 'src/internal')
-rw-r--r--src/internal/mersenne.ts27
1 files changed, 24 insertions, 3 deletions
diff --git a/src/internal/mersenne.ts b/src/internal/mersenne.ts
index 2372e364..d01b5ee9 100644
--- a/src/internal/mersenne.ts
+++ b/src/internal/mersenne.ts
@@ -328,9 +328,7 @@ export class MersenneTwister19937 {
/**
* Generates a MersenneTwister19937 randomizer with 32 bits of precision.
- * This is the default randomizer used by Faker.
- *
- * @internal
+ * This is the default randomizer used by faker prior to v9.0.
*/
export function generateMersenne32Randomizer(): Randomizer {
const twister = new MersenneTwister19937();
@@ -350,3 +348,26 @@ 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.
+ */
+export function generateMersenne53Randomizer(): Randomizer {
+ const twister = new MersenneTwister19937();
+
+ twister.initGenrand(Math.ceil(Math.random() * Number.MAX_SAFE_INTEGER));
+
+ return {
+ next(): number {
+ return twister.genrandRes53();
+ },
+ seed(seed: number | number[]): void {
+ if (typeof seed === 'number') {
+ twister.initGenrand(seed);
+ } else if (Array.isArray(seed)) {
+ twister.initByArray(seed, seed.length);
+ }
+ },
+ };
+}