extra-rand 0.3.1 → 0.3.2

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/README.md CHANGED
@@ -110,6 +110,12 @@ function randomByModel(model: IRandomModel): number
110
110
  function randomByModel(generator: IRandomNumberGenerator, model: IRandomModel): number
111
111
  ```
112
112
 
113
+ ### shuffle
114
+ ```ts
115
+ function shuffle(arr: unknown[]): void
116
+ function shuffle(generator: IRandomNumberGenerator, arr: unknown[]): void
117
+ ```
118
+
113
119
  ### mapToRange
114
120
  ```ts
115
121
  function mapToRange(
package/lib/index.d.ts CHANGED
@@ -7,5 +7,6 @@ export * from './random-index-by-weight.js';
7
7
  export * from './random-weighted.js';
8
8
  export * from './random-by-weight-model.js';
9
9
  export * from './random-by-model.js';
10
+ export * from './shuffle.js';
10
11
  export * from './map-to-range.js';
11
12
  export * from './map-to-index-by-weight.js';
package/lib/index.js CHANGED
@@ -7,6 +7,7 @@ export * from './random-index-by-weight.js';
7
7
  export * from './random-weighted.js';
8
8
  export * from './random-by-weight-model.js';
9
9
  export * from './random-by-model.js';
10
+ export * from './shuffle.js';
10
11
  export * from './map-to-range.js';
11
12
  export * from './map-to-index-by-weight.js';
12
13
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAE1B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AACzC,cAAc,kBAAkB,CAAA;AAChC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,sBAAsB,CAAA;AACpC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,sBAAsB,CAAA;AAEpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,6BAA6B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAE1B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AACzC,cAAc,kBAAkB,CAAA;AAChC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,sBAAsB,CAAA;AACpC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAE5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,6BAA6B,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { IRandomNumberGenerator } from './types.js';
2
+ export declare function shuffle(arr: unknown[]): void;
3
+ export declare function shuffle(generator: IRandomNumberGenerator, arr: unknown[]): void;
package/lib/shuffle.js ADDED
@@ -0,0 +1,20 @@
1
+ import { NativeRandomNumberGenerator } from './native-random-number-generator.js';
2
+ import { randomInt } from './random-int.js';
3
+ export function shuffle(...args) {
4
+ let generator;
5
+ let arr;
6
+ if (args.length === 1) {
7
+ generator = NativeRandomNumberGenerator;
8
+ [arr] = args;
9
+ }
10
+ else {
11
+ [generator, arr] = args;
12
+ }
13
+ for (let targetIndex = arr.length - 1; targetIndex > 1; targetIndex--) {
14
+ const index = randomInt(generator, 0, targetIndex);
15
+ const temp = arr[targetIndex];
16
+ arr[targetIndex] = arr[index];
17
+ arr[index] = temp;
18
+ }
19
+ }
20
+ //# sourceMappingURL=shuffle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shuffle.js","sourceRoot":"","sources":["../src/shuffle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAA;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAI3C,MAAM,UAAU,OAAO,CAAC,GAAG,IAE0B;IAEnD,IAAI,SAAiC,CAAA;IACrC,IAAI,GAAc,CAAA;IAElB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,SAAS,GAAG,2BAA2B,CACtC;QAAA,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;IACf,CAAC;SAAM,CAAC;QACN,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,IAAI,CAAA;IACzB,CAAC;IAED,KAAK,IAAI,WAAW,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,WAAW,GAAG,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC;QACtE,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,WAAW,CAAC,CAAA;QAClD,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,CAAA;QAC7B,GAAG,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAA;QAC7B,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;IACnB,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "extra-rand",
3
- "version": "0.3.1",
3
+ "version": "0.3.2",
4
4
  "description": "Yet another random library",
5
5
  "keywords": [
6
6
  "random"
package/src/index.ts CHANGED
@@ -8,6 +8,7 @@ export * from './random-index-by-weight.js'
8
8
  export * from './random-weighted.js'
9
9
  export * from './random-by-weight-model.js'
10
10
  export * from './random-by-model.js'
11
+ export * from './shuffle.js'
11
12
 
12
13
  export * from './map-to-range.js'
13
14
  export * from './map-to-index-by-weight.js'
package/src/shuffle.ts ADDED
@@ -0,0 +1,27 @@
1
+ import { IRandomNumberGenerator } from './types.js'
2
+ import { NativeRandomNumberGenerator } from './native-random-number-generator.js'
3
+ import { randomInt } from './random-int.js'
4
+
5
+ export function shuffle(arr: unknown[]): void
6
+ export function shuffle(generator: IRandomNumberGenerator, arr: unknown[]): void
7
+ export function shuffle(...args:
8
+ | [arr: unknown[]]
9
+ | [generator: IRandomNumberGenerator, arr: unknown[]]
10
+ ) {
11
+ let generator: IRandomNumberGenerator
12
+ let arr: unknown[]
13
+
14
+ if (args.length === 1) {
15
+ generator = NativeRandomNumberGenerator
16
+ ;[arr] = args
17
+ } else {
18
+ [generator, arr] = args
19
+ }
20
+
21
+ for (let targetIndex = arr.length - 1; targetIndex > 1; targetIndex--) {
22
+ const index = randomInt(generator, 0, targetIndex)
23
+ const temp = arr[targetIndex]
24
+ arr[targetIndex] = arr[index]
25
+ arr[index] = temp
26
+ }
27
+ }