----- Original Message ----- From: "Jim Choate" <[EMAIL PROTECTED]>
> For a RNG to -be- a RNG it -must- be infinity-distributed. This means that > there are -no- string repititions -ever-. Ummm, wrong. That would imply that in a binary stream, once 0 has been used it can never be used again. This of course means that the next must be 1 (which has no entropy, but that is besides the point). Following this, there can be no stream. The requirement for a perfect RNG is that given data points [0,n-1] and [n+1, infinite] it is impossible to determine the point n with any skew in the probability (in binary it simplifies to "with probability higher than 1/2"). Note that this does not mean that the data point n cannot be the same as some other point m, simply that m happened (will happen) and the exact time (place) of it' happening doesn't help determine the value at n. For an RNG, the only requirement be that it generates numbers that resemble random in some way, it is the super-class of true RNG, pseudo RNG, perfect RNG, and pretty much any other RNG you can think of. > If this can't be guaranteed then > the algorithm can be a PRNG (there are other conditionals). Wrong again. The requirement for a pseudo RNG is that it has an algorithm (very often a key as well) that generates the sequence. There are exceptions, /dev/random is a pseudo RNG, even though it breaks this rule. > A PRNG -by > definition- can -not- rule out repititions of some > very_large-distribution. Hence, -all- PRNG's must assume - even in > principle- some very_large-distribution sequence. Actually I think that's true. > So, the statement "My PRNG has no modulus" is incorrect even in principle. That depends, as I pointed out earlier /dev/random is a pseudo RNG, given a system in use the internal state is ever changing (assuming the use is at least slightly entropic), /dev/random has perturbations in it's state that make it non-repeating, yes it does have a certain quantity of state, but that state continually has an additional mix of entropy into it. > It's worth pointing out that the test of 'randomness' are -all' > statistical. They all have a margin of error. There is the a priori > recognition of 'window' effect. Only the tests on the stream, tests on the device itself can be state-less, eliminating the window effect. It has been proven that one cannot test randomness of the output stream, leaving only the possibility of testing the randomness that the device itself is creating (or harvesting). Joe