diff --git a/src/sim/rng.js b/src/sim/rng.js index eebeace..2b6d4a4 100644 --- a/src/sim/rng.js +++ b/src/sim/rng.js @@ -24,5 +24,7 @@ export function makeRng(seed) { // This is the whole hidden-variable mechanism: outcomes are fixed // the moment their label exists, revealed whenever first asked for. export function rollFor(seed, label) { - return makeRng(hash32(seed + ':' + label))(); + // Length-prefix the seed so (seed, label) -> string is injective + // even though seeds and labels themselves contain ':'. + return makeRng(hash32(seed.length + ':' + seed + ':' + label))(); }