UNPKG

1.22 kBJavaScriptView Raw
1var MersenneTwister = require('mersenne-twister');
2
3// Pseudorandom number generator
4var generator = new MersenneTwister();
5
6var array_of = function(n, generator) {
7 var result = [];
8 for (var i = 0; i < n; ++i) {
9 result.push(generator());
10 }
11
12 return result;
13};
14
15var provider = {
16 integer: function(from, to) {
17 from = typeof from === 'undefined' ? -1000 : from - 0;
18 to = typeof to === 'undefined' ? +1000 : to - 0;
19
20 return Math.round(from + (to - from) * this.random);
21 },
22
23 digit: function() {
24 return Math.abs(this.integer(0) % 10);
25 },
26
27 random: function() {
28 return generator.random();
29 },
30
31 double: function(from, to) {
32 from = typeof from === 'undefined' ? -1000 : from - 0;
33 to = typeof to === 'undefined' ? +1000 : to - 0;
34
35 return from + (to - from) * this.random;
36 },
37
38 array_of_digits: function(n) {
39 n = n || 7;
40 return array_of(n, this._digit);
41 },
42
43 array_of_integers: function(n) {
44 n = n || 7;
45 return array_of(n, this._integer);
46 },
47
48 array_of_doubles: function(n) {
49 n = n || 7;
50 return array_of(n, this._double);
51 },
52
53 coin_flip: function() {
54 return generator.random() < 0.5;
55 },
56
57 seed: function(seed) {
58 generator.init_seed(seed);
59 }
60};
61
62module.exports = provider;