From 27f650a8748c64a42394aa3805f5e1d14d30f8f0 Mon Sep 17 00:00:00 2001 From: Christoph Diehl Date: Wed, 12 Apr 2017 21:43:55 +0300 Subject: [PATCH] Add numbers.js --- make/numbers.js | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 make/numbers.js diff --git a/make/numbers.js b/make/numbers.js new file mode 100644 index 0000000..52caf6f --- /dev/null +++ b/make/numbers.js @@ -0,0 +1,44 @@ +make.numbers = { + bool: function () { + return random.bool(); + }, + float: function () { + let n; + if (random.chance(32)) { + switch(random.number(4)) { + case 0: n = random.range(Number.MAX_VALUE, Number.MIN_VALUE); break; + case 1: n = Math.pow(10, 1) / Math.pow(10, random.number(307)); break; + case 2: n = Math.pow(2, random.float() * random.float() * 64); break; + case 3: n = Math.pow(10, random.range(1, 9)) / Math.pow(10, random.range(1, 9)); break; + } + return n; + } + switch (random.number(6)) { + default: n = random.float(); + } + return n; + }, + rangeNumber: function () { + return random.pick([1, 2, 3, 4, 6, 8, 16, 32, 64, make.tinyNumber]); + }, + tinyNumber: function () { + return Math.pow(2, random.number(12)); + }, + unsignedNumber: function () { + if (random.chance(2)) { + return Math.abs(make.number()); + } + return Math.pow(2, random.number(65)) + random.number(3) - 1; + }, + evenNumber: function (number) { + return number % 2 == 1 ? ++number : number; + }, + number: function () { + var value = random.choose([ + [10, make.float], + [10, [make.rangeNumber, make.tinyNumber]], + [ 1, Make.unsignedNumber] + ]); + return random.chance(10) ? -value : value; + } +}