A Flash Developer Resource Site

Results 1 to 4 of 4

Thread: PRNG question / idea

  1. #1
    Senior Member joshstrike's Avatar
    Join Date
    Jan 2001
    Location
    Alhama de Granada, España
    Posts
    1,136

    PRNG question / idea

    Can any math-inclined people tell me if this works...?

    I'm looking for a better way to seed mt_rand(), something that would yield more than the million seeds you get from (double)microtime()*1000003.

    Some people have suggested something like:
    PHP Code:
    $seed=hexdec(substr(md5((double)microtime()*1000003),-8)) & 0x7fffffff
    But I don't see how this is any more random, since there are only a million md5 hashes you can generate from microtime anyway; the pool is the same size.

    In my application, a secondary (though less-reliable) source of randomness is that I don't know the exact last time the generator was seeded, because it hinges sometimes on user interaction. (Other times, reseeding happens in a loop). So my thought was that I could try this:
    PHP Code:
    $seed=hexdec(substr(md5((double)microtime()*1000003),-mt_rand(6,8))) & 0x7fffffff
    which I think should leverage the (unknowable) last seed to choose the length of the md5 substring, which could now yield 6, 7 or 8 digit long hexidecimals (instead of 8 digits only).

    My question is, does this increase the true number of possible random seeds to 3 million? Or is that an error in my reasoning?

  2. #2
    Senior Member joshstrike's Avatar
    Join Date
    Jan 2001
    Location
    Alhama de Granada, España
    Posts
    1,136
    bump?

  3. #3
    Registered User
    Join Date
    Feb 2001
    Posts
    13,039
    Hi,

    it seems that the crypt people take rannomness from looking at diverse things in the system (so one conceivable source of input could be the microtimes of the last few tcp packets that reached the machine from anywhere) and make that randomness available to programs. Why not just read /dev/random or whatever the system provides?

    Musicman

  4. #4
    Senior Member joshstrike's Avatar
    Join Date
    Jan 2001
    Location
    Alhama de Granada, España
    Posts
    1,136
    Huh. Yeah, I guess that might work... using /dev/random for the seed and then cycling through an mt algorithm...
    I'm still wondering whether my method increases the number of seeds from 1 to 3 million or if my math is wrong. It would be easier than running exec() from php all the time, anyway...

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  




Click Here to Expand Forum to Full Width

HTML5 Development Center