math-random.js (1233B)
1 function test() { 2 setRNGState(0x12341234, 0x98765); 3 4 function f() { 5 let x = []; 6 for (let i = 0; i < 10000; i++) { 7 x.push(Math.random()); 8 } 9 return x; 10 } 11 let x = f(); 12 assertEq(x[0], 0.28443027522441433); 13 assertEq(x[10], 0.5283908544644392); 14 assertEq(x[100], 0.5593668121538891); 15 assertEq(x[1000], 0.7008807796441313); 16 assertEq(x[2000], 0.11737403776989574); 17 assertEq(x[3000], 0.08573924080320472); 18 assertEq(x[4000], 0.22428965439295678); 19 assertEq(x[5000], 0.4657521920883555); 20 assertEq(x[6000], 0.11816220100329233); 21 assertEq(x[7000], 0.6306689010335697); 22 assertEq(x[8000], 0.8654862148946609); 23 assertEq(x[9000], 0.31734259460387015); 24 assertEq(x[9999], 0.013959566914027777); 25 26 // Test some other (arbitrary) seeds. 27 setRNGState(0, 1); 28 x = f(); 29 assertEq(x[0], 2.220446049250313e-16); 30 assertEq(x[2000], 0.8259328082050756); 31 assertEq(x[6000], 0.01060492365550314); 32 assertEq(x[9999], 0.7402370773147143); 33 34 setRNGState(0x0fff0101, 0x44440001); 35 x = f(); 36 assertEq(x[0], 0.24994062119568194); 37 assertEq(x[2000], 0.4375430448883283); 38 assertEq(x[6000], 0.7298689950209452); 39 assertEq(x[9999], 0.13284280897626954); 40 } 41 42 if (typeof setRNGState == "function") 43 test();