jsfakeit
Version:

118 lines (117 loc) • 3.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.shuffleNum = exports.randomNum = exports.rangeNormal = exports.normalDist = exports.rangeRandom = exports.range = exports.mean = exports.variance = exports.std = exports.uInt32 = exports.uInt16 = exports.uInt8 = exports.number = void 0;
const chooseRand_1 = require("../helper/chooseRand");
/** Number will generate a random number between given min And max */
const number = (min, max) => {
return (0, chooseRand_1.getRandomArbitrary)(min, max);
};
exports.number = number;
const uInt8 = (max) => {
const uIntArr = new Uint8Array(1);
uIntArr[0] = (0, exports.number)(0, max);
return uIntArr[0];
};
exports.uInt8 = uInt8;
const uInt16 = (max) => {
const uIntArr = new Uint16Array(1);
uIntArr[0] = (0, exports.number)(0, max);
return uIntArr[0];
};
exports.uInt16 = uInt16;
const uInt32 = (max) => {
const uIntArr = new Uint32Array(1);
uIntArr[0] = (0, exports.number)(0, max);
return uIntArr[0];
};
exports.uInt32 = uInt32;
/** get std deviation of an arrayof numbers*/
const std = (arr) => {
return Math.sqrt((0, exports.variance)(arr));
};
exports.std = std;
/** get variance of an array of number */
const variance = (arr) => {
const m = (0, exports.mean)(arr);
const v = arr.map((e) => (e - m) ** 2);
const ss = v.reduce((acc, e) => acc + e, 0);
return ss / arr.length;
};
exports.variance = variance;
/** get mean of an array of number */
const mean = (arr) => arr.reduce((acc, e) => acc + e, 0) / arr.length;
exports.mean = mean;
/** generates number in range */
const range = (start, end, step = 0) => {
if (end < start) {
return [];
}
const res = [];
for (let i = start; i < end; i++) {
res.push(i + step);
}
return res;
};
exports.range = range;
/** Generate random numbers between min and max*/
const rangeRandom = (min, max) => {
if (min == max - 1) {
return [min];
}
if (min > max - 1) {
let tmp = min;
min = max;
max = tmp;
}
const res = [];
for (let _ of (0, exports.range)(min, max)) {
res.push((0, chooseRand_1.getRandomArbitrary)(min, max));
}
return res;
};
exports.rangeRandom = rangeRandom;
/** Generate normal distribution for a value, mean, std deviatiom */
const normalDist = (x, mu, dev) => {
const devSq = dev ** 2;
const coef = 1 / Math.sqrt(2 * Math.PI * devSq);
const kParam = -0.5 * ((x - mu) / dev) ** 2;
const kernal = Math.exp(kParam);
return coef * kernal;
};
exports.normalDist = normalDist;
/** Generate random numbers in nomral distribution */
const rangeNormal = (min, max) => {
if (min === max - 1) {
return [];
}
if (min > max - 1) {
let tmp = min;
min = max;
max = tmp;
}
const arr = (0, exports.rangeRandom)(min, max);
console.log(arr);
const m = (0, exports.mean)(arr);
console.log(m);
const sigma = (0, exports.std)(arr);
console.log(sigma);
return arr.map((e) => (0, exports.normalDist)(e, m, sigma));
};
exports.rangeNormal = rangeNormal;
/** Selects random number from a given array*/
const randomNum = (arr) => {
if (arr.length == 1) {
return arr[0];
}
return arr[(0, chooseRand_1.getRandomArbitrary)(0, arr.length)];
};
exports.randomNum = randomNum;
/** Shuffles given array*/
const shuffleNum = (arr) => {
for (let i of (0, exports.range)(0, arr.length)) {
const j = (0, chooseRand_1.getRandomArbitrary)(0, i);
[arr[i], arr[j]] = [arr[j], arr[i]];
}
return arr;
};
exports.shuffleNum = shuffleNum;