From 4cb7919f2593ee25625992341a0aa29577ed4645 Mon Sep 17 00:00:00 2001 From: salano_ym <53254905+salano-ym@users.noreply.github.com> Date: Mon, 13 May 2024 02:31:03 +0000 Subject: [PATCH 1/3] improve test: Math:gen_rng --- test/index.ts | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/test/index.ts b/test/index.ts index 18e215b9..cb97391d 100644 --- a/test/index.ts +++ b/test/index.ts @@ -3302,17 +3302,27 @@ describe('std', () => { test.concurrent('gen_rng', async () => { const res = await exe(` - @test(seed) { - let random = Math:gen_rng(seed) - return random(0 100) + @test(seed1, seed2) { + let n = 100 + let max = 100000 + let random1 = Math:gen_rng(seed1) + let random2 = Math:gen_rng(seed2) + var same = 0 + for n { + if random1(1, max) == random2(1, max) { + same += 1 + } + } + same / n } let seed1 = \`{Util:uuid()}\` let seed2 = \`{Date:year()}\` - let test1 = if (test(seed1) == test(seed1)) {true} else {false} - let test2 = if (test(seed1) == test(seed2)) {true} else {false} - <: [test1 test2] + let result = [] + result.push(test(seed1, seed1) == 1) + result.push(test(seed1, seed2) < 0.05) + <: result `) - eq(res, ARR([BOOL(true), BOOL(false)])); + eq(res, ARR([BOOL(true), BOOL(true)])); }); }); From e758cef712a6b00439fe1ac84109ae57e58407e3 Mon Sep 17 00:00:00 2001 From: salano_ym <53254905+salano-ym@users.noreply.github.com> Date: Mon, 13 May 2024 13:05:20 +0900 Subject: [PATCH 2/3] =?UTF-8?q?Math:gen=5Frng=E3=81=AE=E3=83=86=E3=82=B9?= =?UTF-8?q?=E3=83=88=E3=81=AB=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88=E3=82=92?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/test/index.ts b/test/index.ts index cb97391d..30ec18ef 100644 --- a/test/index.ts +++ b/test/index.ts @@ -3301,6 +3301,7 @@ describe('std', () => { }); test.concurrent('gen_rng', async () => { + // 2つのシード値から1~maxの乱数をn回生成して一致率を見る const res = await exe(` @test(seed1, seed2) { let n = 100 From f4f860324e9c6df5f5db0f17096e688a59106da2 Mon Sep 17 00:00:00 2001 From: salano_ym <53254905+salano-ym@users.noreply.github.com> Date: Mon, 13 May 2024 17:29:32 +0900 Subject: [PATCH 3/3] refactor index.ts --- test/index.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/test/index.ts b/test/index.ts index 30ec18ef..fd235f22 100644 --- a/test/index.ts +++ b/test/index.ts @@ -3306,6 +3306,7 @@ describe('std', () => { @test(seed1, seed2) { let n = 100 let max = 100000 + let threshold = 0.05 let random1 = Math:gen_rng(seed1) let random2 = Math:gen_rng(seed2) var same = 0 @@ -3314,14 +3315,16 @@ describe('std', () => { same += 1 } } - same / n + let rate = same / n + if seed1 == seed2 { rate == 1 } + else { rate < threshold } } let seed1 = \`{Util:uuid()}\` let seed2 = \`{Date:year()}\` - let result = [] - result.push(test(seed1, seed1) == 1) - result.push(test(seed1, seed2) < 0.05) - <: result + <: [ + test(seed1, seed1) + test(seed1, seed2) + ] `) eq(res, ARR([BOOL(true), BOOL(true)])); });