Hi :)

I've rewritten my old 'SuperRandom' code as a context-sensitive object for OA32.
It's a blend of Mersenne Twister B (with tempering, see MT11213A) and Park-Miller, based on code supplied by Agner Fog and NaN.
It performs automatic reseeding of the Mersenne table periodically (no more than 255 steps), as well as mangling the master random seed at every step.
Given the same initial random seed (via the Init method), it will always generate the same series of pseudorandom 32 bit values.
This means you could use it for asynchronous jobs such as multi-threaded encryption !!

In terms of 'apparent randomness', it has far better numerical distribution than either of the two algorithms apon which it is based, and will use MMX code on machines that support it.

The only thing it won't do is generate numbers within given integer or float ranges, so if you want to do that, you'll have to clamp the output to suit yourself.

Please feel free to use it as you see fit!!
Attachments:
Posted on 2008-12-03 02:10:39 by Homer
Thanks for the new object Homer 8)
Posted on 2008-12-07 06:20:49 by rags
Glad you liked it - please report any issues or changes you think should be made.
I've tried to make it a little unpredictable, within the scope of it being predictable !!
Let me know if you have some cool idea that doesn't rely on local data.... we want the other end of a cypher stream to stay in synch!
Posted on 2008-12-09 02:54:23 by Homer
It'll be perfect for me. Mersenne Twister with SIMD is good trick.
Posted on 2008-12-29 16:16:02 by Dite