Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #92263
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Newsgroups | comp.lang.python |
| Subject | Re: Testing random |
| Date | 2015-06-07 17:51 +0200 |
| Organization | PointedEars Software (PES) |
| Message-ID | <3158703.Lr4HFMbMOd@PointedEars.de> (permalink) |
| References | <87oaksowwg.fsf@Equus.decebal.nl> <1451048.pW9z17ilMA@PointedEars.de> <mailman.242.1433677915.13271.python-list@python.org> |
Chris Angelico wrote:
> On Sun, Jun 7, 2015 at 8:40 PM, Thomas 'PointedEars' Lahn
> <PointedEars@web.de> wrote:
>> Cecil Westerhof wrote:
>>> I wrote a very simple function to test random:
>>> def test_random(length, multiplier = 10000):
>>> number_list = length * [0]
>>> for i in range(length * multiplier):
>>> number_list[random.randint(0, length - 1)] += 1
>>> minimum = min(number_list)
>>> maximum = max(number_list)
>>> return (minimum, maximum, minimum / maximum)
>>
>> As there is no guarantee that every number will occur randomly, using a
>> dictionary at first should be more efficient than a list:
>
> Hmm, I'm not sure that's actually so. His code is aiming to get
> 'multiplier' values in each box; for any serious multiplier (he starts
> with 10 in the main code), you can be fairly confident that every
> number will come up at least once.
The wording shows a common misconception: that random distribution would
mean that it is guaranteed or more probable that every element of the set
will occur at least once. It is another common misconception that
increasing the number of trials would increase the probability of that
happening. But that is not so.
The law of large numbers only says that as you increase the number of
trials, that the relative frequency *approaches* the probability for each
value of the probability variable, or IOW “the average of the results
obtained from a large number of trials should be close to the expected
value, and will *tend to become closer* as more trials are performed.”
(<http://en.wikipedia.org/wiki/Law_of_large_numbers>; emphasis by me)
> […] a true RNG could legitimately produce nothing but 7s for the entire
> run, it's just extremely unlikely.
That reasoning is precisely a result of the misconception described above.
Because people think that every value must occur, they do not think it
possible that (much) repetition could occur with a (pseudo-)random
generator, and when they want to mince words they say “(extremely) unlikely”
instead. For example, when people see
6 5 8 7 9 3 7 8 4 7 5 6 8 8 1 2 8 3 5 7 5 4 1 2 4 8 8 7 5 1
and are told that this is random sequence, they find it hard to believe.
They think something like: “Look at all those repeated 8, and “7, 5”
occurs twice. 4 occurs more often than 2, and there are much more 5s than
1s. That cannot be possibly be random!”
Yes, it *can*. I have just produced it with
#------------------------------------------------------------------
import random
print(" ".join([str(random.randint(1, 9)) for i in range(0, 30)]))'
#------------------------------------------------------------------
But if you think this *Mersenne Twister* PRNG which “generates numbers with
nearly uniform distribution and a large period” is flawed, use a proper die
as RNG, and a sheet of paper to record the outcomes, and do the experiment.
The outcome is not going to be different.
If the distribution is even and the game is fair, every outcome *always* has
the same probability of occurring. As a result, every sequence of outcomes
of equal length *always* has the same probability of occurring, and the
probability for a particular sequence of equal length does _not_ increase or
decrease based on the number of occurrences of previous outcomes. Those are
*independent* events.
See also:
<http://www.teacherlink.org/content/math/interactive/probability/numbersense/misconceptions/home.html>,
in particular the section “Representativeness”
--
PointedEars
Twitter: @PointedEars2
Please do not cc me. / Bitte keine Kopien per E-Mail.
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Testing random Cecil Westerhof <Cecil@decebal.nl> - 2015-06-07 08:27 +0200
Re: Testing random Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-06-07 12:40 +0200
Re: Testing random Chris Angelico <rosuav@gmail.com> - 2015-06-07 21:51 +1000
Re: Testing random Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-06-07 17:51 +0200
Re: Testing random Chris Angelico <rosuav@gmail.com> - 2015-06-08 02:25 +1000
Re: Testing random Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-06-07 18:36 +0200
Re: Testing random Chris Angelico <rosuav@gmail.com> - 2015-06-08 02:44 +1000
Re: Testing random Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-06-07 20:23 +0200
Re: Testing random Chris Angelico <rosuav@gmail.com> - 2015-06-08 04:52 +1000
Re: Testing random Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-06-07 21:41 +0200
Re: Testing random Jussi Piitulainen <jpiitula@ling.helsinki.fi> - 2015-06-07 22:08 +0300
Re: Testing random Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-06-07 21:29 +0200
Re: Testing random random832@fastmail.us - 2015-06-07 15:44 -0400
Re: Testing random Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-06-07 22:09 +0200
Re: Testing random random832@fastmail.us - 2015-06-07 16:41 -0400
Re: Testing random Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-06-07 22:59 +0200
Re: Testing random Steven D'Aprano <steve@pearwood.info> - 2015-06-08 11:26 +1000
Re: Testing random random832@fastmail.us - 2015-06-07 21:34 -0400
Re: Testing random Chris Angelico <rosuav@gmail.com> - 2015-06-08 11:42 +1000
Re: Testing random MRAB <python@mrabarnett.plus.com> - 2015-06-08 02:49 +0100
Re: Testing random random832@fastmail.us - 2015-06-07 21:57 -0400
Re: Testing random Jussi Piitulainen <jpiitula@ling.helsinki.fi> - 2015-06-08 10:40 +0300
Re: Testing random Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-06-10 19:03 +0200
Re: Testing random sohcahtoa82@gmail.com - 2015-06-10 10:52 -0700
Re: Testing random Jussi Piitulainen <jpiitula@ling.helsinki.fi> - 2015-06-10 23:00 +0300
Re: Testing random Ian Kelly <ian.g.kelly@gmail.com> - 2015-06-10 12:02 -0600
Re: Testing random Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-06-12 23:32 +0200
Re: Testing random alister <alister.nospam.ware@ntlworld.com> - 2015-06-12 21:46 +0000
Re: Testing random random832@fastmail.us - 2015-06-12 17:52 -0400
Re: Testing random Ian Kelly <ian.g.kelly@gmail.com> - 2015-06-12 16:00 -0600
Re: Testing random Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-06-13 00:09 +0200
Re: Testing random sohcahtoa82@gmail.com - 2015-06-12 15:55 -0700
Re: Testing random random832@fastmail.us - 2015-06-12 18:57 -0400
Re: Testing random Mark Lawrence <breamoreboy@yahoo.co.uk> - 2015-06-13 08:53 +0100
Re: Testing random random832@fastmail.us - 2015-06-10 14:26 -0400
Re: Testing random Ned Batchelder <ned@nedbatchelder.com> - 2015-06-07 14:21 -0700
Re: Testing random Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-06-16 21:18 +0200
Re: Testing random random832@fastmail.us - 2015-06-16 16:23 -0400
Re: Testing random Ned Batchelder <ned@nedbatchelder.com> - 2015-06-16 13:48 -0700
Re: Testing random Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-06-16 23:57 +0200
Re: Testing random sohcahtoa82@gmail.com - 2015-06-16 15:30 -0700
Re: Testing random Ian Kelly <ian.g.kelly@gmail.com> - 2015-06-16 16:58 -0600
Re: Testing random Laura Creighton <lac@openend.se> - 2015-06-17 11:28 +0200
Re: Testing random Ned Batchelder <ned@nedbatchelder.com> - 2015-06-16 16:26 -0700
Re: Testing random Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-06-17 01:45 +0200
Re: Testing random sohcahtoa82@gmail.com - 2015-06-16 17:36 -0700
Re: Testing random Chris Angelico <rosuav@gmail.com> - 2015-06-17 11:01 +1000
Re: Testing random Ethan Furman <ethan@stoneleaf.us> - 2015-06-16 18:32 -0700
Re: Testing random Mark Lawrence <breamoreboy@yahoo.co.uk> - 2015-06-17 09:41 +0100
Re: Testing random Grant Edwards <invalid@invalid.invalid> - 2015-06-17 14:04 +0000
Re: Testing random Ian Kelly <ian.g.kelly@gmail.com> - 2015-06-17 09:01 -0600
Re: Testing random MRAB <python@mrabarnett.plus.com> - 2015-06-17 01:42 +0100
Re: Testing random Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-06-17 08:53 +0200
Re: Testing random Christian Gollwitzer <auriocus@gmx.de> - 2015-06-17 09:22 +0200
Re: Testing random Chris Angelico <rosuav@gmail.com> - 2015-06-17 17:28 +1000
Re: Testing random Tim Golden <mail@timgolden.me.uk> - 2015-06-17 08:30 +0100
Re: Testing random Cecil Westerhof <Cecil@decebal.nl> - 2015-06-17 11:57 +0200
Re: Testing random Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2015-06-17 01:36 +0000
Re: Testing random Laura Creighton <lac@openend.se> - 2015-06-17 12:33 +0200
Re: Testing random Steven D'Aprano <steve@pearwood.info> - 2015-06-17 22:47 +1000
Re: Testing random Laura Creighton <lac@openend.se> - 2015-06-17 15:50 +0200
Re: Testing random Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2015-06-17 01:35 +0000
Re: Testing random Jussi Piitulainen <jpiitula@ling.helsinki.fi> - 2015-06-17 07:41 +0300
Re: Testing random Steven D'Aprano <steve@pearwood.info> - 2015-06-08 11:11 +1000
Re: Testing random Ian Kelly <ian.g.kelly@gmail.com> - 2015-06-07 11:07 -0600
Re: Testing random Chris Angelico <rosuav@gmail.com> - 2015-06-08 03:20 +1000
Re: Testing random "C.D. Reimer" <chris@cdreimer.com> - 2015-06-07 10:36 -0700
Re: Testing random Steven D'Aprano <steve@pearwood.info> - 2015-06-08 04:28 +1000
Re: Testing random Chris Angelico <rosuav@gmail.com> - 2015-06-08 04:40 +1000
Re: Testing random Steven D'Aprano <steve@pearwood.info> - 2015-06-08 04:24 +1000
Re: Testing random Jonas Wielicki <jonas@wielicki.name> - 2015-06-07 12:41 +0200
Re: Testing random Steven D'Aprano <steve@pearwood.info> - 2015-06-07 22:52 +1000
Re: Testing random Steven D'Aprano <steve@pearwood.info> - 2015-06-07 23:06 +1000
Re: Testing random Peter Otten <__peter__@web.de> - 2015-06-07 15:35 +0200
Re: Testing random Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-06-07 18:36 +0200
Re: Testing random Peter Otten <__peter__@web.de> - 2015-06-07 18:48 +0200
Re: Testing random Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-06-07 22:15 +0200
Re: Testing random Steven D'Aprano <steve@pearwood.info> - 2015-06-08 11:35 +1000
Re: Testing random Christian Gollwitzer <auriocus@gmx.de> - 2015-06-07 14:53 +0200
Re: Testing random Dennis Lee Bieber <wlfraed@ix.netcom.com> - 2015-06-07 11:04 -0400
csiph-web