diff --git a/lib/bcoin/ec.js b/lib/bcoin/ec.js index 4e2f1b1a..739f7f2e 100644 --- a/lib/bcoin/ec.js +++ b/lib/bcoin/ec.js @@ -95,6 +95,17 @@ ec.random = function random(size) { return new Buffer(ec.elliptic.rand(size)); }; +/** + * Generate a random number within a range. + * @param {Number} min - Inclusive. + * @param {Number} max - Exclusive. + * @returns {Number} + */ + +ec.rand = function rand(min, max) { + return (ec.random(1)[0] / 256) * (max - min) + min; +}; + /** * Verify a signature. * @param {Buffer} msg diff --git a/lib/bcoin/mempool.js b/lib/bcoin/mempool.js index 1069dadb..3f88894e 100644 --- a/lib/bcoin/mempool.js +++ b/lib/bcoin/mempool.js @@ -457,7 +457,7 @@ Mempool.prototype.limitOrphans = function limitOrphans(callback) { if (self.totalOrphans <= constants.mempool.MAX_ORPHAN_TX) return callback(); - i = Math.random() * orphans.length | 0; + i = bcoin.ec.rand(0, orphans.length); hash = orphans[i]; orphans.splice(i, 1);