main
1export function mulberry32(a: number) {
2 return () => {
3 a += 0x6d2b79f5;
4 let t = a;
5 t = Math.imul(t ^ (t >>> 15), t | 1);
6 t ^= t + Math.imul(t ^ (t >>> 7), t | 61);
7 return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
8 };
9}
10
11export function shuffle<T>(arr: readonly T[], generator = Math.random): T[] {
12 const a = arr.slice();
13 for (let i = a.length - 1; i > 0; i--) {
14 const j = Math.floor(generator() * (i + 1));
15 [a[i], a[j]] = [a[j], a[i]];
16 }
17 return a;
18}