Troubleshooting

Streams Differ After Refactoring

Check the consumption pattern. Calling next32, next64, nextBytes, and block APIs in different orders can change alignment. This is intentional for generators that expose exact block behavior.

Immutable Samples Repeat

Use the returned continuation generator:

val first = rng.next64()
val second = first.generator.next64()

Calling rng.next64() repeatedly on the same immutable state returns the same first value.

Xoshiro Rejects Explicit State

The all-zero xoshiro256 state is invalid. Use a non-zero explicit state or a Long seed constructor.

L64X128 Rejects a Byte Seed

L64X128Random accepts at most 32 seed bytes, matching its four 64-bit state words. Shorter seeds are expanded deterministically.

Results Are Not Suitable for Secrets

These are deterministic pseudo-random generators for reproducibility, simulation, and testing. Do not use them to generate passwords, tokens, keys, or other security-sensitive secrets.