4 ms·
The choice is not "randomly seeded" vs "streams". If you have a 64 bit seed + 64 bit stream, then it's trivially the same as a 128 bit seed. Just use the top 6
by searealist 5y ago
The choice is not "randomly seeded" vs "streams".
If you have a 64 bit seed + 64 bit stream, then it's trivially the same as a 128 bit seed. Just use the top 64 bits of the 128 bit seed as the "stream id".
- jsheard 5y agoPartitioning the seed into "seed + ID" only protects you from using the exact same seed for multiple generators, those unique seeds can still begin close to each other in the sequence and overlap their outputs as they step through it. With proper streams every generator has a different sequence so no matter how the seeds are generated, or even if the seeds are the same, they won't overlap each other at any point. For a game it probably doesn't matter, but for more statistically demanding applications it's a nice property to have.
- CGamesPlay 5y agoI'm very confused by what you're saying. It seems you're saying that knowing the state of stream 1 teaches me some information about stream 2, specifically that it's guaranteed not to overlap outputs to the first stream. Why is that desirable?
- searealist 5y agoYeah, I guess you really just need a jump function and then streams are just partitioning the space by whatever distance.
- attractivechaos 5y agoYes, it works, if you can jump 2^64 iterations quickly. This is how xoroshiro achieves multiple streams. The PCG32 or the xoroshiro method guarantees independent streams. Using high bits in seeds doesn't have the guaranteed behavior. When you have many streams, stream collisions may become an issue.