typescript-dotnet-core
Version:
A the core classes and utilities of a JavaScript-Friendly .NET Based TypeScript Library.
7 lines (6 loc) • 1.77 kB
JavaScript
/*!
* @author electricessence / https://github.com/electricessence/
* Licensing: MIT
*/Object.defineProperty(exports,"__esModule",{value:!0});var Random,Integer_1=require("./Integer"),initialize_1=require("./Collections/Array/initialize"),shuffle_1=require("./Collections/Array/shuffle"),assert=Integer_1.default.assert;!function(t){function u(e){return void 0===e&&(e=1),Math.floor(Math.random()*e)}function a(e,n){var t=Math.abs(e);return 0===t||1===t&&!n?0:(n&&(e+=e/t),u(e))}function r(e){for(var n=e.length,t=initialize_1.default(n),r=0;r<n;r++)t[r]=e[r];return t}function e(e){return void 0===e&&(e=1),function(){return u(e)}}function n(e,n){return assert(e,"boundary"),a(e,n)}var i;function o(e,n){switch(n!==1/0&&Integer_1.default.assertZeroOrGreater(n),n){case 0:return[];case 1:return[o.one(e,!0)];default:var t=shuffle_1.shuffle(r(e));return n<t.length&&(t.length=n),t}}t.integer=function(e){return n(e)},t.generate=e,(e=t.generate||(t.generate={})).integers=function(e,n){return function(){return a(e,n)}},t.next=n,(i=n=t.next||(t.next={})).integer=function(e,n){return t.next(e,n)},i.float=function(e){if(void 0===e&&(e=Number.MAX_VALUE),isNaN(e))throw"'boundary' is not a number.";return Math.random()*e},i.inRange=function(e,n,t){assert(e,"min"),assert(n,"max");var r=n-e;return 0===r?e:(t&&(r+=r/Math.abs(r)),e+u(r))},t.integers=function(e,n,t){assert(e);var r=[];r.length=e;for(var u=0;u<e;u++)r[u]=a(n,t);return r},t.shuffle=function(e){return shuffle_1.shuffle(e)},t.copy=function(e){return shuffle_1.shuffle(r(e))},t.select=o,(o=t.select||(t.select={})).one=function(e,n){if(e&&e.length)return e[u(e.length)];if(n)throw"Cannot select from an empty set."}}(Random=Random||{}),exports.default=Random;
//# sourceMappingURL=Random.js.map
;