Summary: std.random.unpredictableSeed() should use thread ID
           Product: D
           Version: 2.030
          Platform: PC
        OS/Version: Windows
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Phobos

uint unpredictableSeed()
    static bool seeded;
    static MinstdRand0 rand;
    if (!seeded) {
        rand.seed(getpid ^ cast(uint)getUTCtime);
        seeded = true;
    return cast(uint) (getUTCtime ^ rand.front);

If called from multiple threads at exactly the same time, unpredictableSeed
gives every thread the same seed.  This is annoying when running the same monte
carlo simulation simultaneously in multiple threads, since I tend to spawn all
of the threads at exactly the same time.  Something like:

(getpid + cast(uint) Thread.getThis) ^ cast(uint) getUTCtime

might work well.

Configure issuemail:
------- You are receiving this mail because: -------

Reply via email to