170 likes | 298 Vues
In this intriguing analysis, we seek to identify the "most random number" between 1 and 1000 through a unique probability distribution function. Our approach considers the effects of normal distribution, error overlays, and Benford's law to derive numbers devoid of special properties. Utilizing MATLAB, we demonstrate our findings for various ranges, revealing the most random numbers as 7 (1-10), 17 (1-50), 347 (1-1000), and even 347,971 (1,000,000). This exploration highlights the layers of randomness in numerical sequences.
E N D
Most Random Number • Tom Carter • CSSS • 2004
Here’s a somewhat strange question . . . • What is the most random number between 1 and 1000?
How to go at it? • Let’s try to develop a “probability distribution function” representing some general notion of a “randomness” property for numbers . . . :-)
Too simple. We do get a unique maximum at 500, but that can’t be right. • As everybody knows, you never get the actual data value. There are always “errors” that push you away from the real value. • So, we should overlay a repelling “error dark-force” on top.
Now we’re getting somewhere! • But, we don’t have a unique maximum any more. • There must be a bias in one direction or the other, mustn’t there?
Aha! We forgot about Benford’s law on the distribution of significant digits. • One form of Benford’s law says that on average, the proportion of numbers having first digit less than d will be about log(d+1) for d = 1, 2, . . ., 9. • Another way to say this is that the distribution will be approximately 1/(d+1), so we’ll overlay a power law
Now we’re almost done. We have a single maximum, and it is not the simplistic 500. • One more piece. Random numbers must not have “special properties,” right? • So, they probably won’t be divisible by small primes like 2 or 3 or 5. • Let’s write a couple of small MatLab functions for all this.
function r = mrn(x) %"most random number" function :-) r = (1/((x/100) + 1)) * (1 - normpdf(x, 500, 70) normpdf(500,500,70)) * normpdf(x, 500, 167); function r = maxrn % search for "most random number" using mrn(x) maxval = 0; maxrn = 0; for n = 1:1000 if rem(n,2) ~= 0 & rem(n,3) ~= 0 & rem(n,5) ~= 0 & mrn(n) > maxval maxval = mrn(n); maxrn = n; end end r = maxrn;
Now we run our function, and there it is, the most random number between 1 and 1000: >> maxrn ans = 347
What about more general versions of this? • In other words, what about the most random number between 1 and 10, 1 and 100, 1 and 10000, etc.?
function r = mrng(x,maxn) %"most random number" function :-) r = (1/((10*x/maxn) + 1)) * (1 - normpdf(x, maxn/2, 0.07*maxn)/normpdf(maxn/2,maxn/2,0.07*maxn)) * normpdf(x, maxn/2, maxn/6); function r = maxrng(maxn) % search for "most random number" using mrng(x,maxn) maxval = 0; maxrn = 0; for n = 1:maxn if rem(n,2) ~= 0 & rem(n,3) ~= 0 & rem(n,5) ~= 0 & mrng(n,maxn) > maxval maxval = mrng(n,maxn); maxrn = n; end end r = maxrn;
Summary of most random numbers: • 1 to 10: 7 • 1 to 50: 17 • 1 to 100: 37 • 1 to 500: 173 • 1 to 1000: 347 • 1 to 10,000: 3,479 • 1 to 100,000: 34,799 • 1 to 1,000,000: 347,971