@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 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, float, floats, integer, integers, item, range, roll, shuffle };
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, float, floats, integer, integers, item, range, roll, shuffle };
11
- export { coinflip, float, floats, integer, integers, item, range, roll, shuffle };
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 './rng';
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(random * items.length)];
5
+ return items[Math.floor(rng() * items.length)];
6
6
  }
7
7
  if (items.length !== weights.length) {
8
- throw new Error('Random: each option requires a chance number');
8
+ throw new Error('Random: each item requires a weight');
9
9
  }
10
- let sum = 0;
10
+ let random = rng() * BASIS_POINTS, total = BASIS_POINTS;
11
11
  for (let i = 0, n = weights.length; i < n; i++) {
12
- sum += weights[i];
12
+ total += weights[i];
13
13
  }
14
- if (sum < .9) {
15
- throw new Error('Random: chance numbers need to exceed a total value of .9');
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 option pick failed');
23
+ throw new Error('Random: weighted item pick failed');
25
24
  };
package/package.json CHANGED
@@ -14,5 +14,5 @@
14
14
  "prepublishOnly": "npm run build"
15
15
  },
16
16
  "types": "build/index.d.ts",
17
- "version": "0.0.3"
17
+ "version": "0.0.5"
18
18
  }
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, float, floats, integer, integers, item, range, roll, shuffle };
13
- export { coinflip, float, floats, integer, integers, item, range, roll, shuffle };
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 './rng';
1
+ import rng from "./rng";
2
2
 
3
3
 
4
- export default <T>(items: T[], weights?: number[]): T => {
5
- let random = rng();
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(random * items.length) ];
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 option requires a chance number');
13
+ throw new Error('Random: each item requires a weight');
13
14
  }
14
15
 
15
- let sum = 0;
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
- sum += weights[i];
20
+ total += weights[i];
19
21
  }
20
22
 
21
- if (sum < .9) {
22
- throw new Error('Random: chance numbers need to exceed a total value of .9');
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 option pick failed');
35
+ throw new Error('Random: weighted item pick failed');
36
36
  };
package/src/float.ts DELETED
@@ -1,4 +0,0 @@
1
- import rng from './rng';
2
-
3
-
4
- export default rng;
package/src/floats.ts DELETED
@@ -1,13 +0,0 @@
1
- import rng from './rng';
2
- import shuffle from './shuffle';
3
-
4
-
5
- export default (n: number): number[] => {
6
- let values: number[] = [];
7
-
8
- for (let i = 0; i < n; i++) {
9
- values.push(rng());
10
- }
11
-
12
- return shuffle(values);
13
- };
package/src/integer.ts DELETED
@@ -1,6 +0,0 @@
1
- import rng from './rng';
2
-
3
-
4
- export default () => {
5
- return Math.floor(rng());
6
- };
package/src/integers.ts DELETED
@@ -1,13 +0,0 @@
1
- import rng from './rng';
2
- import shuffle from './shuffle';
3
-
4
-
5
- export default (n: number) => {
6
- let values: number[] = [];
7
-
8
- for (let i = 0; i < n; i++) {
9
- values.push( Math.floor(rng()) );
10
- }
11
-
12
- return shuffle(values);
13
- };