RngState
Immutable, counter-based seeded PRNG (SplitMix64).
Output is a pure function of (seed, step), so any state's RNG can be replayed exactly. Every draw returns the value AND the advanced Rng — nothing mutates. Integer-only math, identical on every Kotlin target (jvm/android/ios/wasmJs).