Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!linus!decvax!harpo!eagle!jerry From: jerry@eagle.UUCP (Jerry Schwarz) Newsgroups: net.math,net.misc,net.rec.bridge Subject: Re: simple (?) statistics problem solved Message-ID: <1075@eagle.UUCP> Date: Tue, 23-Aug-83 04:21:41 EDT Article-I.D.: eagle.1075 Posted: Tue Aug 23 04:21:41 1983 Date-Received: Tue, 23-Aug-83 15:38:38 EDT References: <1814@rabbit.UUCP>, <903@utcsstat.UUCP> utcsstat.908 Lines: 56 This discussion has taken a typical course. Each side repeats arguments in favor or one answer without addressing where the other side has gone wrong. In this item I will try to expose the error in Laura's reasoning. But first, it is possible to demonstrate that she is wrong without finding a flaw in her reasoning by conducting an experiment. A program to simulate the conditions of the problem is attached below. On our machine it gives the result: n_gold=654, n_silver=346 So where is the flaw in her reasoning? It is that her idea of "rescanning" is not well formulated. In order to be correct the "rescan" must use ALL the knowledge acquired by opening a drawer. But, besides the certainty that one cabinet is eliminated we have gained a certain amount of information from having carried out a random trial. The experimental evidence shows that this information must be taken into account. The idea of gathering knowledge from random trials is a commonplace and intuitive one. Perhaps it is slightly obscured when, as in this problem, statistical information is combined with definite information. Jerry Schwarz eagle!jerry /**************************************************************/ typedef enum { gold, silver } COIN ; COIN drawers[6] = { silver, silver, silver, gold, gold, gold } ; main() { int n_gold = 0 ; int n_silver = 0 ; int choice ; while ( n_gold+n_silver < 1000 ) { choice = (rand()>>5) % 6 ; switch ( drawers[choice] ) { case silver: /* ignore these trials */ break ; case gold: { switch( drawers[ choice^1 ] ) { case gold: ++n_gold ; break ; case silver: ++n_silver ; break ; } break ; } } } printf("n_gold=%d, n_silver=%d\n",n_gold,n_silver) ; }