{"ScriptPreparationCode":"class Xoshiro128StarStar {\r\n\tconstructor(a, b, c, d) {\r\n\t\tthis.a = a \u003E\u003E\u003E 0;\r\n\t\tthis.b = b \u003E\u003E\u003E 0;\r\n\t\tthis.c = c \u003E\u003E\u003E 0;\r\n\t\tthis.d = d \u003E\u003E\u003E 0;\r\n\t}\r\n\r\n\tnext() {\r\n\t\tconst t = this.b \u003C\u003C 9;\r\n\t\tlet r = this.b * 5;\r\n\t\tr = ((r \u003C\u003C 7) | (r \u003E\u003E\u003E 25)) * 9;\r\n\r\n\t\tthis.c ^= this.a;\r\n\t\tthis.d ^= this.b;\r\n\t\tthis.b ^= this.c;\r\n\t\tthis.a ^= this.d;\r\n\t\tthis.c ^= t;\r\n\t\tthis.d = (this.d \u003C\u003C 11) | (this.d \u003E\u003E\u003E 21);\r\n\r\n\t\treturn r \u003E\u003E\u003E 0; // Ensure unsigned integer\r\n\t}\r\n}\r\n\r\n\r\n////\r\n\r\nfunction generateInt32() {\r\n return Math.floor(Math.random() * 0x80000000) | 0;\r\n}\r\n// init\r\narc4Gen = new Math.seedrandom(\u0022test\u0022);\r\naleaGen = alea(\u0022test\u0022);\r\ntycheiGen = tychei(\u0022test\u0022);\r\nxor128Gen = xor128(\u0022test\u0022);\r\nxor4096Gen = xor4096(\u0022test\u0022);\r\nxorshift7Gen = xorshift7(\u0022test\u0022);\r\nxorwowGen = xorwow(\u0022test\u0022);\r\nXoshiro128StarStarGen = new Xoshiro128StarStar(435335105, 1235613264, 1925681904, 682079889);","TestCases":[{"Name":"Vanilla","Code":"for (let i = 0; i \u003C 1000; i\u002B\u002B) {\r\n\tconst a = Math.random() \u002B generateInt32();\r\n}","IsDeferred":false},{"Name":"arc4","Code":"for (let i = 0; i \u003C 1000; i\u002B\u002B) {\r\n\tconst a = arc4Gen.quick() \u002B arc4Gen.int32();\r\n}","IsDeferred":false},{"Name":"alea","Code":"for (let i = 0; i \u003C 1000; i\u002B\u002B) {\r\n\tconst a = aleaGen.quick() \u002B aleaGen.int32();\r\n}","IsDeferred":false},{"Name":"tychei","Code":"for (let i = 0; i \u003C 1000; i\u002B\u002B) {\r\n\tconst a = tycheiGen.quick() \u002B tycheiGen.int32();\r\n}","IsDeferred":false},{"Name":"xor128","Code":"for (let i = 0; i \u003C 1000; i\u002B\u002B) {\r\n\tconst a = xor128Gen.quick() \u002B xor128Gen.int32();\r\n}","IsDeferred":false},{"Name":"xor4096","Code":"for (let i = 0; i \u003C 1000; i\u002B\u002B) {\r\n\tconst a = xor4096Gen.quick() \u002B xor4096Gen.int32();\r\n}","IsDeferred":false},{"Name":"xorshift7","Code":"for (let i = 0; i \u003C 1000; i\u002B\u002B) {\r\n\tconst a = xorshift7Gen.quick() \u002B xorshift7Gen.int32();\r\n}","IsDeferred":false},{"Name":"xorwow","Code":"for (let i = 0; i \u003C 1000; i\u002B\u002B) {\r\n\tconst a = xorwowGen.quick() \u002B xorwowGen.int32();\r\n}","IsDeferred":false},{"Name":"xoshiro128**","Code":"for (let i = 0; i \u003C 1000; i\u002B\u002B) {\r\n\tconst a = Xoshiro128StarStarGen.next() / 0x100000000 \u002B Xoshiro128StarStarGen.next();\r\n}","IsDeferred":false}]}