Testing random
Ned Batchelder
ned at nedbatchelder.com
Tue Jun 16 19:26:16 EDT 2015
On Tuesday, June 16, 2015 at 6:01:06 PM UTC-4, Thomas 'PointedEars' Lahn wrote:
> Ned Batchelder wrote:
>
> > [...]
> > This is done empirically, by producing `nseq` sequences of
> > `nrolls` rolls of the die. Each sequence is examined to
> > see if it has a zero. The total number of no-zero
> > sequences divided `nseq` is the probability.
>
> No, it is not. It is the relative frequency for *this* number of trials and
> *this* run of the experiment.
>
> > """
> > no_zeros = 0
> > for _ in xrange(nseq):
> > seq = die_rolls(nrolls)
> > if not any_zeros(seq):
> > no_zeros += 1
> > return float(no_zeros)/nseq
> >
> > for n in range(10, 101, 10):
> > # Calculate the probability of getting no zeros by trying
> > # it a million times.
> > prob = probability_of_no_zero(n, 1000000)
> > print "n = {:3d}, P(no zero) = {:.8f}".format(n, prob)
> >
> >
> >
> > Running this gives:
> >
> > $ pypy testrandom.py
> > n = 10, P(no zero) = 0.34867300
> > n = 20, P(no zero) = 0.12121900
> > n = 30, P(no zero) = 0.04267000
> > n = 40, P(no zero) = 0.01476600
> > n = 50, P(no zero) = 0.00519900
> > n = 60, P(no zero) = 0.00174100
> > n = 70, P(no zero) = 0.00061600
> > n = 80, P(no zero) = 0.00020600
> > n = 90, P(no zero) = 0.00006300
> > n = 100, P(no zero) = 0.00002400
> >
> >
> > As n increases, the probability of having no zeros goes down.
>
> Your programmatic "proof", as all the other intuitive-empirical "proofs",
> and all the other counter-arguments posted before in this thread, is flawed.
> As others have pointed out at the beginning of this thread, you *cannot*
> measure or calculate probability or determine randomness programmatically
> (at least not with this program).
You *can* estimate probability with a program, which is what is happening
here.
> I repeat: Probability is what relative
> frequency (which you can measure) *approaches* for *large* numbers. 100 is
> anything but large, to begin with.
The number of trials in this program is not 100, it is 1 million. You seem
uninterested in trying to understand.
> What is "large" depends on the
> experiment, not on the experimentator. And with independent events, the
> probability for getting zero does not increase because you have been getting
> non-zeros before. It simply does not work this way.
Again, if you look at the code, you'll see that we are not talking about
the probability of getting a zero on the next roll. We are talking about the
probability of getting no zeros in an N-roll sequence. I have no idea how you
have misunderstood this for so long.
I'll stop trying to explain it.
--Ned.
More information about the Python-list
mailing list