aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/datatype.js8
-rw-r--r--lib/index.js3
-rw-r--r--lib/mersenne.js31
-rw-r--r--lib/random.js6
4 files changed, 39 insertions, 9 deletions
diff --git a/lib/datatype.js b/lib/datatype.js
index d2ec9ad2..02ea3759 100644
--- a/lib/datatype.js
+++ b/lib/datatype.js
@@ -1,5 +1,3 @@
-var mersenne = require('../vendor/mersenne');
-
/**
*
* @namespace faker.datatype
@@ -7,10 +5,10 @@ var mersenne = require('../vendor/mersenne');
function Datatype (faker, seed) {
// Use a user provided seed if it is an array or number
if (Array.isArray(seed) && seed.length) {
- mersenne.seed_array(seed);
+ faker.mersenne.seed_array(seed);
}
else if(!isNaN(seed)) {
- mersenne.seed(seed);
+ faker.mersenne.seed(seed);
}
/**
@@ -47,7 +45,7 @@ function Datatype (faker, seed) {
}
var randomNumber = Math.floor(
- mersenne.rand(max / options.precision, options.min / options.precision));
+ faker.mersenne.rand(max / options.precision, options.min / options.precision));
// Workaround problem in Float point arithmetics for e.g. 6681493 / 0.01
randomNumber = randomNumber / (1 / options.precision);
diff --git a/lib/index.js b/lib/index.js
index f76a581e..a80580bd 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -92,6 +92,9 @@ function Faker (opts) {
var Unique = require('./unique');
self.unique = new Unique(self).unique;
+ var Mersenne = require('./mersenne');
+ self.mersenne = new Mersenne();
+
var Random = require('./random');
self.random = new Random(self);
diff --git a/lib/mersenne.js b/lib/mersenne.js
new file mode 100644
index 00000000..722ebc46
--- /dev/null
+++ b/lib/mersenne.js
@@ -0,0 +1,31 @@
+var Gen = require('../vendor/mersenne').MersenneTwister19937;
+
+function Mersenne() {
+ var gen = new Gen();
+ gen.init_genrand((new Date).getTime() % 1000000000);
+
+ this.rand = function(max, min) {
+ if (max === undefined)
+ {
+ min = 0;
+ max = 32768;
+ }
+ return Math.floor(gen.genrand_real2() * (max - min) + min);
+ }
+ this.seed = function(S) {
+ if (typeof(S) != 'number')
+ {
+ throw new Error("seed(S) must take numeric argument; is " + typeof(S));
+ }
+ gen.init_genrand(S);
+ }
+ this.seed_array = function(A) {
+ if (typeof(A) != 'object')
+ {
+ throw new Error("seed_array(A) must take array of numbers; is " + typeof(A));
+ }
+ gen.init_by_array(A, A.length);
+ }
+}
+
+module.exports = Mersenne;
diff --git a/lib/random.js b/lib/random.js
index 4c2daaac..4443c555 100644
--- a/lib/random.js
+++ b/lib/random.js
@@ -1,5 +1,3 @@
-var mersenne = require('../vendor/mersenne');
-
/**
* Method to reduce array of characters
* @param arr existing array of characters
@@ -22,10 +20,10 @@ var arrayRemove = function (arr, values) {
function Random (faker, seed) {
// Use a user provided seed if it is an array or number
if (Array.isArray(seed) && seed.length) {
- mersenne.seed_array(seed);
+ faker.mersenne.seed_array(seed);
}
else if(!isNaN(seed)) {
- mersenne.seed(seed);
+ faker.mersenne.seed(seed);
}
/**