rumble-charts
Version:
Truly declarative React charts components
35 lines (33 loc) • 1.25 kB
JavaScript
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 };