Re: non-Markov base ten random number generator based on Pi
- To: mathgroup at smc.vnet.net
- Subject: [mg52048] Re: non-Markov base ten random number generator based on Pi
- From: Bill Rowe <readnewsciv at earthlink.net>
- Date: Mon, 8 Nov 2004 03:13:41 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
On 11/7/04 at 1:03 AM, tftn at earthlink.net (Roger Bagula) wrote:
>This result is an experimental random number generator. It uses the
>PSLQ Bailey Pi digits rational polynomial to generate digits in the 0
>to 9 range using a process that loses information , but generally
>behaves like the Pi digits. It is not Markov, in that there is no
>previous behavior involved in calculating the next random number.
>(* Bailey formula with digit drop base 80*)
>(* base 10 random number generator that isn't Markov *)
>(* use integer seed as the number of digits in to start calculation*)
>(* other PSLQ functions of transcendental numbers could be used to do
>this same kind of random number*)
>f[n_]=Floor[Mod[80^n*(4/(8*n+1)-2/(8*n+4)-1/(8*n+5)-1/(8*n+6))/16^n,10]]
>Digits=4000;rdpi=Table[f[n],{n,0,Digits}];
>c1=Drop[FoldList[Plus,0,Sign[Drop[rdpi,1]-Drop[rdpi,-1]]],1];
>ListPlot[c1,PlotJoined->True];
>(* Rowe Count*)
>d1=Flatten@{0,Length/@Split[Sort@c1], 0}
>Dimensions[d1][[1]]
>ListPlot[d1,PlotJoined->True];
I gather from your various posts you are trying to use the plot of c1 as a visual indicator of randomness. If that is your goal, then there are far simpler plots that are more meaningful. One of the simplest and easiest to interpret would be a plot of the cumulative distribution function for the data set.
For example:
dataSize = 10000;
data = Table[Random[Integer,{0,9}],{dataSize}];
ListPlot[
Rest@FoldList[Plus,0,Length/@Split[Sort@data]]/dataSize,
PlotJoined->True];
For a uniform distribution, the cumulative distribution function is x/(b-a) where a, b are the end points. That is, the cumulative distribution function for a uniform distribution should plot as a straight line from 0 to 1 over the interval (a,b).
Contrast this with
<<Statistics`DiscreteDistributions`;
data = Table[Random[BinomialDistribution[5, .5]], {dataSize}];
ListPlot[
Rest@FoldList[Plus,0,Length/@Split[Sort@data]]/dataSize,
PlotJoined->True];
The plot is clearly not a straight line indicating the data is not from a uniform distribution.
But to really demonstrate a pseudo random number generator adequately generates uniform deviates you will need more than such a simple plot.
--
To reply via email subtract one hundred and four