UNPKG

rumble-charts

Version:

Truly declarative React charts components

35 lines (33 loc) 1.25 kB
function random(lower, upper, floating) { if (lower === void 0) { lower = 0; } if (upper === void 0) { upper = 1; } if (floating === void 0) { floating = false; } var value = lower + cryptoRand() * upper; if (!floating) { value = Math.trunc(value); } return value; } var crypto = typeof window === 'undefined' ? (window.crypto || window.msCrypto) : window.crypto; var cryptoRand = typeof window === 'undefined' ? function () { var buf = crypto.randomBytes(4); var dataView = new DataView(toArrayBuffer(buf)); var uint = dataView.getUint32(0); return uint / (0xffffffff + 1); // 0xFFFFFFFF = uint32.MaxValue (+1 because Math.random is inclusive of 0, but not 1) } : function () { var array = new Int8Array(4); crypto.getRandomValues(array); var dataView = new DataView(array.buffer); var uint = dataView.getUint32(0); return uint / (0xffffffff + 1); // 0xFFFFFFFF = uint32.MaxValue (+1 because Math.random is inclusive of 0, but not 1) }; function toArrayBuffer(buf) { var ab = new ArrayBuffer(buf.length); var view = new Uint8Array(ab); for (var i = 0; i < buf.length; ++i) { view[i] = buf[i]; } return ab; } export { random };