You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

54 lines
1.4 KiB

#!/usr/bin/env perl
use strict;
use warnings;
use 5.10.0;
# NOTE: we got the thing about the goat being the prize backwards
# from how this is usually defined.
# basic setup:
# you get 3 doors
# - initially, you pick a door at random
# - second, the host eliminates one of the two remaining doors that you haven't picked
# - now, you have the option to switch to the remaining door from the one you've already picked
my ($switched, $unswitched) = (0, 0);
my $doors = 3;
for (my $i = 0; $i < 1000000; $i++) {
my $goat = int(rand($doors));
my $initial_selection = int(rand($doors));
# my $host_eliminates = int(rand($doors));
# until (($host_eliminates != $initial_selection) && ($host_eliminates != $goat)) {
# $host_eliminates = int(rand($doors));
# }
# THIS IS OUR BUG (i kind of think)
# my $final_selection = int(rand($doors));
# until ($final_selection != $host_eliminates) {
# $final_selection = int(rand($doors));
# }
if ($goat == $initial_selection) {
$unswitched++;
} else {
$switched++;
}
# say "you pick: $initial_selection"; say "host eliminates: $host_eliminates";
# say "goat is: $goat";
# say "final selection is: $final_selection";
# say "correct? " . ($result ? 'yes' : 'no');
if ($i % 10000 == 0) {
say "$switched, $unswitched ";
}
}
say "switched from initial decision: $switched";
say "unswitched from initial decision: $unswitched";