-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathRandom.js
46 lines (33 loc) · 822 Bytes
/
Random.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
const secureRandom = require("secure-random");
const maxNum = 2 ** (8 * 6) - 1;
module.exports = class Random {
static randFloat() {
var num = secureRandom(6, { type: "Buffer" }).readUIntBE(0, 6);
return num / maxNum;
}
static randInt(min, max) {
return Math.floor(this.randFloat() * (max - min + 1) + min);
}
static randArrayVal(arr, splice) {
if (arr.length == 0)
return;
const index = this.randInt(0, arr.length - 1);
const res = arr[index];
if (splice)
arr.splice(index, 1);
return res;
}
static randomizeArray(arr) {
arr = arr.slice();
var i, temp;
var m = arr.length - 1;
while (m > 0) {
i = Math.floor(this.randFloat() * (m + 1));
temp = arr[m];
arr[m] = arr[i];
arr[i] = temp;
m--;
}
return arr;
}
}