From: Lawrence Troxler
Subject: how to generate a collection of random states?
Date: 
Message-ID: <Yeh1a.234$2U5.181669@monger.newsread.com>
I would like to generate a collection of random states that are as much as 
possible, different from each other, in the sense that if one is used 
repeatedly to generate a series of numbers, then that series will be as 
much as possible uncorrelated to such a series generated starting with one 
of the other random states.

It seems that using (make-random-state t) repeatedly is not a good 
approach, since the method used to create the state is not specified, and 
may be purely clock-based.

Would an approach like the following work, and be portable?

 1) save *random-state*
 2) generate a large (random?) amount of numbers using that state
 3) goto 1

Larry Troxler
  
From: Steven M. Haflich
Subject: Re: how to generate a collection of random states?
Date: 
Message-ID: <3E474A7B.8050207@alum.mit.edu>
Lawrence Troxler wrote:
> I would like to generate a collection of random states that are as much as 
> possible, different from each other, in the sense that if one is used 
> repeatedly to generate a series of numbers, then that series will be as 
> much as possible uncorrelated to such a series generated starting with one 
> of the other random states.
> 
> It seems that using (make-random-state t) repeatedly is not a good 
> approach, since the method used to create the state is not specified, and 
> may be purely clock-based.
> 
> Would an approach like the following work, and be portable?
> 
>  1) save *random-state*
>  2) generate a large (random?) amount of numbers using that state
>  3) goto 1

I would suggest no one spend serious time on this until you first
specify what you mean by two random states that generate series
"as muchas possible uncorreleated with [the series from] the other
random state."

If you think about this long and hard, you will realize an important
truth about probability and randomness.  This is something often not
well understood by programmers, whose main task in life is making
algorithms that behave deterministically.

To help you a little, here's the hook on which you are likely to hang
yourself:

Whatever definition you devise for "uncorrelated", any random sequence
generator that optimizes that uncorrelatedness will necessarily be 
highly correlated in some other way with those peers with which it is
"uncorrelated".  Truly random sequences are truly random, which means
that the correlation between them is truly random, which permits
random regions of high correlation (in whatever way correlation is
defined).

Implementationally, library random numbr generators are often good but
never perfect.  Whatever definition of uncorrelatedness you select, it
will only be as good as the random number generator is really random.
If any of this is really important to you, you should buy one of those
thermal-noise generators that plugs into your machine's RS232 port and
gives you all the truly unreproducible random thermal noise your machine
can digest.  Most software random number generators will cycle, although
the cycle length will be very large.