legacy code retreat's triva game : the D version
Timon Gehr
timon.gehr at gmx.ch
Sun Dec 22 04:09:51 PST 2013
On 12/22/2013 09:06 AM, Marco Leise wrote:
> Am Sun, 22 Dec 2013 02:12:51 +0100
> schrieb Timon Gehr <timon.gehr at gmx.ch>:
>
>> On 12/22/2013 02:09 AM, Timon Gehr wrote:
>>>>
>>>> The morale is that "uniform" random numbers doesn't imply that
>>>> every value in the range will eventually be generated once!
>>>>
>>>
>>> Yes it does. (The probability that some value is never generated is 0.)
>>> The actual morale is that random number generators do not generate true
>>> randomness, and poor random number generators may generate sequences
>>> that do not look remotely random.
>>
>> 'pseudo random number generators' would be a more accurate term.
>
> Can you elaborate a bit?
The probability that a certain number does not occur in one round is
(n-1)/n.
((n-1)/n)^k goes to 0 rather fast as k goes to infinity.
In fact, the expected number of trials until all numbers are covered is
~ n log n, and the probability that the process runs significantly
longer is very small.
See also: http://en.wikipedia.org/wiki/Coupon_collector%27s_problem
> How do you know that the Java LCG can produce every 32-bit integer once?
Typically constants are chosen such that this holds, but your code would
require something stronger to fail, namely, that a certain congruence
class does not occur. Typically pseudo random number generators are
chosen such that the generated sequences look close to true randomness.
If such a simple process can be used to reliably distinguish true
randomness and the pseudo random number generator, then the pseudo
random number generator is not very good.
> If that's true then
> the problem with the Java code was something different and I
> was just biased, because I was already expecting the code to
> fail before the fact.
Maybe. There is a vast number of ways that this could have failed.
> (Expectations can do strange things to your perception.)
>
Indeed. :)
More information about the Digitalmars-d-announce
mailing list