In doing computer simulations, such as
the one I wrote for simulating the results of part 2 of Rumor Mill, one often uses a random number generator that's built into the computer language. These generators are based on a seed (some arbitrary number) and are mixed up at each step that calls for a random number. There are only a finite number of seeds, and each one is based mechanically on the previous, so they necessarily repeat after a while.
The seed is kept internally, away from the programmer's view, so the programmer can't ask for, say, the next random number after .753372.
If one suspects that the repetition cycle is actually occuring within the length of the run that he needs, what algorithm can you put into the program to find the period with which your results are repeating (and are therefore no longer random, or rather no longer independent trials)? Assume you do not have room to store all the numbers as they arrive, nor can you afford the time it would take to compare each new number to all the preceding numbers.
Then also, how do you determine where the repetition cycle begins (after what iteration of the loop of trials).
(In reply to
Am I oversimplifying? by SteveH)
The first number given might not repeat in the cycle. Just to simplify things I'll make it an extremely short case: .9723342, .87276343, .12988348, .3287223, .12988348, ... repeating the last two indefinitely. Never is the first number ever returned again.
Similarly, the first dozen might never repeat, or the first hundred, with the looping back starting somewhat later in the sequence.
|
Posted by Charlie
on 2005-02-11 18:08:54 |