@guillaume-docquier/tools-ts 6.3.4 → 6.4.0
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.
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* box-muller basic form implementation: https://en.wikipedia.org/wiki/Box%E2%80%93Muller_transform
|
|
3
|
+
*
|
|
4
|
+
* u1 must be non-zero
|
|
5
|
+
*/
|
|
6
|
+
export function boxMullerSample(u1, u2) {
|
|
7
|
+
// z1 = Rcos(theta)
|
|
8
|
+
// z2 = Rsin(theta)
|
|
9
|
+
//
|
|
10
|
+
// where
|
|
11
|
+
//
|
|
12
|
+
// R^2 = -2 * ln(u1)
|
|
13
|
+
// theta = 2 * PI * u2
|
|
14
|
+
const R = Math.sqrt(-2 * Math.log(u1));
|
|
15
|
+
const theta = 2 * Math.PI * u2;
|
|
16
|
+
return {
|
|
17
|
+
z1: R * Math.cos(theta),
|
|
18
|
+
z2: R * Math.sin(theta),
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=boxMullerSample.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boxMullerSample.js","sourceRoot":"","sources":["../../src/rng/boxMullerSample.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,EAAU,EAAE,EAAU;IACpD,mBAAmB;IACnB,mBAAmB;IACnB,EAAE;IACF,QAAQ;IACR,EAAE;IACF,oBAAoB;IACpB,sBAAsB;IACtB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;IAE9B,OAAO;QACL,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACvB,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;KACxB,CAAA;AACH,CAAC"}
|
package/dist/rng/rng.d.ts
CHANGED
|
@@ -29,6 +29,13 @@ export type Rng = {
|
|
|
29
29
|
drawn: T[];
|
|
30
30
|
remaining: T[];
|
|
31
31
|
};
|
|
32
|
+
/**
|
|
33
|
+
* Returns a random number from a normal distribution.
|
|
34
|
+
*
|
|
35
|
+
* The mean is the center of the distribution (default: 0)
|
|
36
|
+
* The std is the spread of the distribution (default: 1)
|
|
37
|
+
*/
|
|
38
|
+
normal: (mean?: number, std?: number) => number;
|
|
32
39
|
};
|
|
33
40
|
/**
|
|
34
41
|
* Creates a random number generator based on your generator of choice.
|
package/dist/rng/rng.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { boxMullerSample } from "./boxMullerSample.js";
|
|
1
2
|
const intBoundsOffset = {
|
|
2
3
|
inclusive: 1,
|
|
3
4
|
exclusive: 0,
|
|
@@ -47,12 +48,32 @@ export function createRng(generator) {
|
|
|
47
48
|
remaining: shuffled.splice(count),
|
|
48
49
|
};
|
|
49
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* box-muller outputs 2 numbers, so we keep the extra value that we can return instead of recomputing
|
|
53
|
+
*/
|
|
54
|
+
let spareNormal;
|
|
55
|
+
function normal(mean = 0, std = 1) {
|
|
56
|
+
if (spareNormal !== undefined) {
|
|
57
|
+
const value = spareNormal;
|
|
58
|
+
spareNormal = undefined;
|
|
59
|
+
return value;
|
|
60
|
+
}
|
|
61
|
+
// u1 must be non-zero
|
|
62
|
+
let u1;
|
|
63
|
+
do {
|
|
64
|
+
u1 = generator();
|
|
65
|
+
} while (u1 === 0);
|
|
66
|
+
const { z1, z2 } = boxMullerSample(u1, generator());
|
|
67
|
+
spareNormal = mean + std * z1;
|
|
68
|
+
return mean + std * z2;
|
|
69
|
+
}
|
|
50
70
|
return {
|
|
51
71
|
random,
|
|
52
72
|
float,
|
|
53
73
|
int,
|
|
54
74
|
shuffle,
|
|
55
75
|
draw,
|
|
76
|
+
normal,
|
|
56
77
|
};
|
|
57
78
|
}
|
|
58
79
|
//# sourceMappingURL=rng.js.map
|
package/dist/rng/rng.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rng.js","sourceRoot":"","sources":["../../src/rng/rng.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rng.js","sourceRoot":"","sources":["../../src/rng/rng.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@guillaume-docquier/tools-ts",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.4.0",
|
|
4
4
|
"description": "My personal collection of typescript tools",
|
|
5
5
|
"homepage": "https://github.com/Guillaume-Docquier/tools-ts",
|
|
6
6
|
"license": "MIT",
|
|
@@ -24,12 +24,12 @@
|
|
|
24
24
|
"provenance": true
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@logtape/logtape": "^2.
|
|
28
|
-
"@logtape/redaction": "^2.
|
|
27
|
+
"@logtape/logtape": "^2.3.0",
|
|
28
|
+
"@logtape/redaction": "^2.3.0"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@guillaume-docquier/oxfmt": "^1.0.
|
|
32
|
-
"@guillaume-docquier/oxlint": "^1.2.
|
|
31
|
+
"@guillaume-docquier/oxfmt": "^1.0.5",
|
|
32
|
+
"@guillaume-docquier/oxlint": "^1.2.3",
|
|
33
33
|
"@semantic-release/commit-analyzer": "^13.0.1",
|
|
34
34
|
"@semantic-release/exec": "^7.1.0",
|
|
35
35
|
"@semantic-release/github": "^12.0.9",
|
|
@@ -40,12 +40,12 @@
|
|
|
40
40
|
"husky": "^9.1.7",
|
|
41
41
|
"jiti": "^2.7.0",
|
|
42
42
|
"lint-staged": "^16.4.0",
|
|
43
|
-
"oxfmt": ">=0.
|
|
44
|
-
"oxlint": "^1.
|
|
43
|
+
"oxfmt": ">=0.61.0",
|
|
44
|
+
"oxlint": "^1.76.0",
|
|
45
45
|
"oxlint-tsgolint": "^7.0.2001",
|
|
46
46
|
"semantic-release": "^25.0.8",
|
|
47
47
|
"typescript": "~7.0.2",
|
|
48
|
-
"vite": "^8.
|
|
48
|
+
"vite": "^8.2.0",
|
|
49
49
|
"vitest": "^4.1.10",
|
|
50
50
|
"node": "runtime:26.5.0"
|
|
51
51
|
},
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"devEngines": {
|
|
60
60
|
"packageManager": {
|
|
61
61
|
"name": "pnpm",
|
|
62
|
-
"version": "11.
|
|
62
|
+
"version": "11.20.0",
|
|
63
63
|
"onFail": "download"
|
|
64
64
|
},
|
|
65
65
|
"runtime": {
|