didn't know. Sorry.
Would you mind elaborating that? |
One nice example is the "n-tupel equal distribution" property. This means, if you split your random sequence into n-tuples, then the sequence is equal distributed in the n-dimensional vector space.
For example if n = 2, then if you draw your random numbers into (x,y) - vectors, then these vectors should point in all possible places equal distributed, right? The C-buildin "rand" function is a "LCG generator" and it does this for n=2. But IIRC, not anymore if n>5. Regardless of what you feed to srand!
For example the Mersenne Twister guarantee equal distribution until n=623.
Another way of thinking about this:
How many continuous integers do I need from a random sequence to be able to predict the next integer better than just blind guessing? (just better guessing - not necessarily exact prediction)
rand(): less than 6.
Mersenne Twister: more than 623.
SHA-2: forget it..
There exist really strong pseudo number generators which are proven secure against some very common mathematical problems like factorizing big numbers*). This means in other words: If anyone could break them and guess any random number in the sequence better than blind guessing, then he could also break the mathematical problem (and get a nobel price and become Professor for Math at a university of his choice blabla). But these algorithms are usually a lot slower than "shuffeling around" - things like SHA-2, so seldomly used..
Note that I only spoke about algorithms, not about the seed. You were right in the point that the seed has to be good or else nothing in a pseudo-random number generator will help you making good numbers. But the seed is not even nearly all of the story.
Ciao, Imi.
*) An algorithm called "x² mod n" is secure against the Discrete Logarithm Problem, whereas GMR is secure against factorizing big numbers.