Skip to content

Commit 43ff2a9

Browse files
authored
Merge pull request aiscript-dev#660 from salano-ym/fix-test-genrng
Math:gen_rngのテストを改善
2 parents 38f36ef + f4f8603 commit 43ff2a9

File tree

1 file changed

+22
-8
lines changed

1 file changed

+22
-8
lines changed

test/index.ts

+22-8
Original file line numberDiff line numberDiff line change
@@ -3311,18 +3311,32 @@ describe('std', () => {
33113311
});
33123312

33133313
test.concurrent('gen_rng', async () => {
3314-
const res = await exe(`
3315-
@test(seed) {
3316-
let random = Math:gen_rng(seed)
3317-
return random(0 100)
3314+
// 2つのシード値から1~maxの乱数をn回生成して一致率を見る
3315+
const res = await exe(`
3316+
@test(seed1, seed2) {
3317+
let n = 100
3318+
let max = 100000
3319+
let threshold = 0.05
3320+
let random1 = Math:gen_rng(seed1)
3321+
let random2 = Math:gen_rng(seed2)
3322+
var same = 0
3323+
for n {
3324+
if random1(1, max) == random2(1, max) {
3325+
same += 1
3326+
}
3327+
}
3328+
let rate = same / n
3329+
if seed1 == seed2 { rate == 1 }
3330+
else { rate < threshold }
33183331
}
33193332
let seed1 = \`{Util:uuid()}\`
33203333
let seed2 = \`{Date:year()}\`
3321-
let test1 = if (test(seed1) == test(seed1)) {true} else {false}
3322-
let test2 = if (test(seed1) == test(seed2)) {true} else {false}
3323-
<: [test1 test2]
3334+
<: [
3335+
test(seed1, seed1)
3336+
test(seed1, seed2)
3337+
]
33243338
`)
3325-
eq(res, ARR([BOOL(true), BOOL(false)]));
3339+
eq(res, ARR([BOOL(true), BOOL(true)]));
33263340
});
33273341
});
33283342

0 commit comments

Comments
 (0)