An RNG belongs to a sample stream
The companion uses an explicit SplitMix64 integer generator with an owned 64-bit state. Its algorithm and attribution are documented. The high 53 bits map to a half-open double interval. This is a useful deterministic teaching stream, not a cryptographic generator or an assertion of independent streams.
Keep generator state local to a pixel/sample stream instead of sharing one mutable generator across workers. A global lock can make the stream depend on task scheduling, which turns a rendering bug into a difficult moving target. Reproducibility needs a defined seed policy and sample dimension order, not merely a constant somewhere in main. Draw u and v in separate statements before passing them to a sampler: function-argument evaluation order does not choose those dimensions for you.
For your renderer, initially run one worker and record a tuple such as pixel, sample index, and base seed. If you later hash that tuple into a stream seed, identify the mixing algorithm and test its reproducibility. Distinct seeds alone do not prove statistical independence, so avoid turning a convenient implementation choice into a statistical claim.
