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!
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.