diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/datatype.js | 8 | ||||
| -rw-r--r-- | lib/index.js | 3 | ||||
| -rw-r--r-- | lib/mersenne.js | 31 | ||||
| -rw-r--r-- | lib/random.js | 6 |
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); } /** |
