(seed: number)
| 100 | } |
| 101 | |
| 102 | function createRng(seed: number): () => number { |
| 103 | let state = seed >>> 0 |
| 104 | return () => { |
| 105 | state = (state * 1664525 + 1013904223) >>> 0 |
| 106 | return state / 0x100000000 |
| 107 | } |
| 108 | } |
| 109 | |
| 110 | function pick<T>(rng: () => number, values: T[]): T { |
| 111 | return values[Math.floor(rng() * values.length)] as T |