@esportsplus/random 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/index.d.ts +1 -9
- package/build/index.js +2 -6
- package/build/item.js +9 -10
- package/package.json +1 -1
- package/src/index.ts +2 -6
- package/src/item.ts +12 -12
- package/src/float.ts +0 -4
- package/src/floats.ts +0 -13
- package/src/integer.ts +0 -6
- package/src/integers.ts +0 -13
package/build/index.d.ts
CHANGED
|
@@ -1,22 +1,14 @@
|
|
|
1
1
|
import coinflip from './coinflip';
|
|
2
|
-
import float from './float';
|
|
3
|
-
import floats from './floats';
|
|
4
|
-
import integer from './integer';
|
|
5
|
-
import integers from './integers';
|
|
6
2
|
import item from './item';
|
|
7
3
|
import range from './range';
|
|
8
4
|
import roll from './roll';
|
|
9
5
|
import shuffle from './shuffle';
|
|
10
6
|
declare const _default: {
|
|
11
7
|
coinflip: () => boolean;
|
|
12
|
-
float: () => number;
|
|
13
|
-
floats: (n: number) => number[];
|
|
14
|
-
integer: () => number;
|
|
15
|
-
integers: (n: number) => any[];
|
|
16
8
|
item: <T>(items: T[], weights?: number[] | undefined) => T;
|
|
17
9
|
range: (min: number, max: number, integer?: boolean) => number;
|
|
18
10
|
roll: (percentage: number) => boolean;
|
|
19
11
|
shuffle: (values: any[]) => any[];
|
|
20
12
|
};
|
|
21
13
|
export default _default;
|
|
22
|
-
export { coinflip,
|
|
14
|
+
export { coinflip, item, range, roll, shuffle };
|
package/build/index.js
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import coinflip from './coinflip';
|
|
2
|
-
import float from './float';
|
|
3
|
-
import floats from './floats';
|
|
4
|
-
import integer from './integer';
|
|
5
|
-
import integers from './integers';
|
|
6
2
|
import item from './item';
|
|
7
3
|
import range from './range';
|
|
8
4
|
import roll from './roll';
|
|
9
5
|
import shuffle from './shuffle';
|
|
10
|
-
export default { coinflip,
|
|
11
|
-
export { coinflip,
|
|
6
|
+
export default { coinflip, item, range, roll, shuffle };
|
|
7
|
+
export { coinflip, item, range, roll, shuffle };
|
package/build/item.js
CHANGED
|
@@ -1,25 +1,24 @@
|
|
|
1
|
-
import rng from
|
|
1
|
+
import rng from "./rng";
|
|
2
|
+
const BASIS_POINTS = 10000;
|
|
2
3
|
export default (items, weights) => {
|
|
3
|
-
let random = rng();
|
|
4
4
|
if (weights === undefined) {
|
|
5
|
-
return items[Math.floor(
|
|
5
|
+
return items[Math.floor(rng() * items.length)];
|
|
6
6
|
}
|
|
7
7
|
if (items.length !== weights.length) {
|
|
8
|
-
throw new Error('Random: each
|
|
8
|
+
throw new Error('Random: each item requires a weight');
|
|
9
9
|
}
|
|
10
|
-
let
|
|
10
|
+
let random = rng() * BASIS_POINTS, total = BASIS_POINTS;
|
|
11
11
|
for (let i = 0, n = weights.length; i < n; i++) {
|
|
12
|
-
|
|
12
|
+
total += weights[i];
|
|
13
13
|
}
|
|
14
|
-
if (
|
|
15
|
-
throw new Error('Random:
|
|
14
|
+
if (total !== 0) {
|
|
15
|
+
throw new Error('Random: weights use basis point math, they must add up to 10000 ( 100% )');
|
|
16
16
|
}
|
|
17
|
-
let total = 0;
|
|
18
17
|
for (let i = 0, n = items.length; i < n; i++) {
|
|
19
18
|
total += weights[i];
|
|
20
19
|
if (random <= total) {
|
|
21
20
|
return items[i];
|
|
22
21
|
}
|
|
23
22
|
}
|
|
24
|
-
throw new Error('Random: weighted
|
|
23
|
+
throw new Error('Random: weighted item pick failed');
|
|
25
24
|
};
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
import coinflip from './coinflip';
|
|
2
|
-
import float from './float';
|
|
3
|
-
import floats from './floats';
|
|
4
|
-
import integer from './integer';
|
|
5
|
-
import integers from './integers';
|
|
6
2
|
import item from './item';
|
|
7
3
|
import range from './range';
|
|
8
4
|
import roll from './roll';
|
|
9
5
|
import shuffle from './shuffle';
|
|
10
6
|
|
|
11
7
|
|
|
12
|
-
export default { coinflip,
|
|
13
|
-
export { coinflip,
|
|
8
|
+
export default { coinflip, item, range, roll, shuffle };
|
|
9
|
+
export { coinflip, item, range, roll, shuffle };
|
package/src/item.ts
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import rng from
|
|
1
|
+
import rng from "./rng";
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
const BASIS_POINTS = 10000;
|
|
5
|
+
|
|
6
6
|
|
|
7
|
+
export default <T>(items: T[], weights?: number[]): T => {
|
|
7
8
|
if (weights === undefined) {
|
|
8
|
-
return items[ Math.floor(
|
|
9
|
+
return items[ Math.floor(rng() * items.length) ];
|
|
9
10
|
}
|
|
10
11
|
|
|
11
12
|
if (items.length !== weights.length) {
|
|
12
|
-
throw new Error('Random: each
|
|
13
|
+
throw new Error('Random: each item requires a weight');
|
|
13
14
|
}
|
|
14
15
|
|
|
15
|
-
let
|
|
16
|
+
let random = rng() * BASIS_POINTS,
|
|
17
|
+
total = BASIS_POINTS;
|
|
16
18
|
|
|
17
19
|
for (let i = 0, n = weights.length; i < n; i++) {
|
|
18
|
-
|
|
20
|
+
total += weights[i];
|
|
19
21
|
}
|
|
20
22
|
|
|
21
|
-
if (
|
|
22
|
-
throw new Error('Random:
|
|
23
|
+
if (total !== 0) {
|
|
24
|
+
throw new Error('Random: weights use basis point math, they must add up to 10000 ( 100% )');
|
|
23
25
|
}
|
|
24
26
|
|
|
25
|
-
let total = 0;
|
|
26
|
-
|
|
27
27
|
for (let i = 0, n = items.length; i < n; i++) {
|
|
28
28
|
total += weights[i];
|
|
29
29
|
|
|
@@ -32,5 +32,5 @@ export default <T>(items: T[], weights?: number[]): T => {
|
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
throw new Error('Random: weighted
|
|
35
|
+
throw new Error('Random: weighted item pick failed');
|
|
36
36
|
};
|
package/src/float.ts
DELETED
package/src/floats.ts
DELETED
package/src/integer.ts
DELETED
package/src/integers.ts
DELETED