diff options
| author | Shinigami92 <[email protected]> | 2022-01-10 21:34:27 +0100 |
|---|---|---|
| committer | Damien Retzinger <[email protected]> | 2022-01-14 18:37:49 -0500 |
| commit | e0d0b5cc45cfde3dd6a351650becf9ea83b99ae2 (patch) | |
| tree | 8014f68054db34065e1192ed61cd2e943ebe9bd5 /src/mersenne.ts | |
| parent | b20f80bf7886e89045e369add9c5598d3586a225 (diff) | |
| download | faker-e0d0b5cc45cfde3dd6a351650becf9ea83b99ae2.tar.xz faker-e0d0b5cc45cfde3dd6a351650becf9ea83b99ae2.zip | |
feat: rewrite datatype to ts
Diffstat (limited to 'src/mersenne.ts')
| -rw-r--r-- | src/mersenne.ts | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/mersenne.ts b/src/mersenne.ts new file mode 100644 index 00000000..e7ab78eb --- /dev/null +++ b/src/mersenne.ts @@ -0,0 +1,36 @@ +const Gen = require('../vendor/mersenne').MersenneTwister19937; + +export class Mersenne { + private gen = new Gen(); + + constructor() { + this.gen.init_genrand(new Date().getTime() % 1000000000); + } + + rand(max, min) { + if (max === undefined) { + min = 0; + max = 32768; + } + + return Math.floor(this.gen.genrand_real2() * (max - min) + min); + } + + seed(S) { + if (typeof S != 'number') { + throw new Error('seed(S) must take numeric argument; is ' + typeof S); + } + + this.gen.init_genrand(S); + } + + seed_array(A) { + if (typeof A != 'object') { + throw new Error( + 'seed_array(A) must take array of numbers; is ' + typeof A + ); + } + + this.gen.init_by_array(A, A.length); + } +} |
