as a good all-purpose pseudo random number generator I have always been fond of the Tausworthe-88 by P. L'Ecuyer.
That's because of five main features this PRNG has:
1) it's a simple algorithm and runs fast.
2) it passes all standard statistical tests.
3) its period (2^88) is long enough for music/audio and most applications.
4) its internal state is only 12 bytes. (fast and easy to seed + low memory requirements)
5) possible to run in parallel and therefore code it with SSE/AVX for extra speed.
Of course there is no real "perfect" RNG, but I found the Tausworthe-88 to provide the best compromise between quality and speed.
I have been using it as my default RNG for my MSP externals, where values need to be generated at the sampling rate and therefore speed and efficiency are an issue. That's why I haven't mentioned Mersenne Twister or TT800 yet, even though I am aware of those and I used them a few times. Very valid and useful RNGs in my opinion... of course more complex than Tausworthe and therefore slower and requiring more memory.
Now, the annoying thing I run into is that the Tausworthe-88 is by default a 32-bit RNG and now with Max/MSP running at 64-bit it would be a shame not to employ the full floating-point range for random number generation.
I did find an alternative, but I would like to put out there some very open questions:
- What are developers' thoughts and opinions about true 64-bit RNGs?
- Has this been an issue at all for most people?
- What are the options/alternatives have you found out there?
- RNGs preferences?
Thanks for sharing...