aboutsummaryrefslogtreecommitdiff
path: root/src/mersenne.ts
diff options
context:
space:
mode:
authorShinigami92 <[email protected]>2022-01-10 21:34:27 +0100
committerDamien Retzinger <[email protected]>2022-01-14 18:37:49 -0500
commite0d0b5cc45cfde3dd6a351650becf9ea83b99ae2 (patch)
tree8014f68054db34065e1192ed61cd2e943ebe9bd5 /src/mersenne.ts
parentb20f80bf7886e89045e369add9c5598d3586a225 (diff)
downloadfaker-e0d0b5cc45cfde3dd6a351650becf9ea83b99ae2.tar.xz
faker-e0d0b5cc45cfde3dd6a351650becf9ea83b99ae2.zip
feat: rewrite datatype to ts
Diffstat (limited to 'src/mersenne.ts')
-rw-r--r--src/mersenne.ts36
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);
+ }
+}