http://www.perlmonks.org?node_id=1070027


in reply to Spooky math problem

In my opinion, this great thread still needs a simple Perl script to prove what's going on. Here it is, so that you can play the game yourself against the script. In order to avoid any confusion about the source of the numbers in the envelope you have to specify them as parameters to the script yourself. The third required parameter is the number of repetitions in the simulation to evaluate the odds.

use strict; use warnings; use List::Util qw(min max); sub chose { my $x=shift; $x>0?1-chose(-$x):0.5*exp($x) } my ($a,$b,$n) = @ARGV; # provide numbers and repetitions on command li +ne my $ctr = $n; my $correct = 0; while($ctr--){ my $envelope = rand()<0.5?$a:$b; # pick an envelope at random my $answer = rand()<1-chose($envelope)?'low':'high'; $correct++ # count the correct answers if ( $envelope==min($a,$b) and $answer eq 'low' ) or ( $envelope== +max($a,$b) and $answer eq 'high' ); } printf"Correct ones: %20.17f%%, theoretical odds: %20.17f%%\n", 100*$c +orrect/$n, 50+50*(chose(max($a,$b))-chose(min($a,$b)));

IMHO, the script is simple enough to prove that no cheating is going on.

If you play with the inputs you can see that if you provide numbers that are easily distinguishable (by the chose function) the odds are significantly larger than 50% (for example choosing -1 and 1 will lead to odds larger than 80%). If numbers are less distinguishable like 100 and 200, the odds will converge to 50%, and the simulation error will be larger than the advantage.

Great puzzle!