Just noticing this behaviour. The streams of different seeded RNG is partially correlated when the seed (and the difference in seed) is small. Perhaps it is well known, just I didn't read about it in the package readme:
using Random, StableRNGs
rDiff(rngFunction,seedBase,seedDiff,repetitions) = norm(rand(rngFunction(seedBase),repetitions) .- rand(rngFunction(seedBase+seedDiff),repetitions))/repetitions
# Seed base 1000: ok
rDiff(StableRNG,1000,1,100000) # 0.00129
rDiff(StableRNG,1000,10,100000) # 0.00129
rDiff(StableRNG,1000,1000,100000) # 0.00129
rDiff(MersenneTwister,1000,1,100000) # 0.00129
rDiff(MersenneTwister,1000,10,100000) # 0.00129
rDiff(MersenneTwister,1000,1000,100000) # 0.00129
# Seed base 10: Still ok
rDiff(StableRNG,10,1,100000) # 0.00129
rDiff(StableRNG,10,10,100000) # 0.00129
rDiff(StableRNG,10,1000,100000) # 0.00129
rDiff(MersenneTwister,10,1,100000) # 0.00129
rDiff(MersenneTwister,10,10,100000) # 0.00129
rDiff(MersenneTwister,10,1000,100000) # 0.00129
# Seed base 1: We start seeing problems for StableRNG..
rDiff(StableRNG,1,1,100000) # 0.00125 <--
rDiff(StableRNG,1,10,100000) # 0.00129
rDiff(StableRNG,1,1000,100000) # 0.00129
rDiff(MersenneTwister,1,1,100000) # 0.00129
rDiff(MersenneTwister,1,10,100000) # 0.00129
rDiff(MersenneTwister,1,1000,100000) # 0.00129
# Seed base 0: Unexpected results for for StableRNG..
rDiff(StableRNG,0,1,100000) # 0.00105 <----------
rDiff(StableRNG,0,2,100000) # 0.00116 <-----
rDiff(StableRNG,0,5,100000) # 0.00123 <---
rDiff(StableRNG,0,10,100000) # 0.00126 <--
rDiff(StableRNG,0,1000,100000) # 0.00129
rDiff(MersenneTwister,0,1,100000) # 0.00130 <-
rDiff(MersenneTwister,0,2,100000) # 0.00129
rDiff(MersenneTwister,0,5,100000) # 0.00129
rDiff(MersenneTwister,0,10,100000) # 0.00129
rDiff(MersenneTwister,0,1000,100000) # 0.00129
Just noticing this behaviour. The streams of different seeded RNG is partially correlated when the seed (and the difference in seed) is small. Perhaps it is well known, just I didn't read about it in the package readme: