File tree 1 file changed +22
-8
lines changed
1 file changed +22
-8
lines changed Original file line number Diff line number Diff line change @@ -3311,18 +3311,32 @@ describe('std', () => {
3311
3311
} ) ;
3312
3312
3313
3313
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 }
3318
3331
}
3319
3332
let seed1 = \`{Util:uuid()}\`
3320
3333
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
+ ]
3324
3338
` )
3325
- eq ( res , ARR ( [ BOOL ( true ) , BOOL ( false ) ] ) ) ;
3339
+ eq ( res , ARR ( [ BOOL ( true ) , BOOL ( true ) ] ) ) ;
3326
3340
} ) ;
3327
3341
} ) ;
3328
3342
You can’t perform that action at this time.
0 commit comments