in reply to Re^7: Marilyn Vos Savant's Monty Hall problem
in thread Marilyn Vos Savant's Monty Hall problem
The code for option 3 is quite confusing. It took me a while to figure out exactly what it was doing.
my @available = grep { $door[ $choice ] eq 'car' ? ( $_ != $choice ) : ( $doors[ $_ ] eq +'car' ) } 0 .. 2;
Hmm.. I guess that's not much clearer either.
Update: so I rewrote the code, and I think this is clearer:
for ( 1 .. 100_000 ) { my @door = 0 .. 2; my $car_door = int rand @door; my $my_pick = int rand @door; @door = grep { $_ != $my_pick } @door; ## Option 1: The host reveals a goat #my @available = grep { $_ != $car_door } @door; # Option 2: The host opens a random unopened door #my @available = @door; ## Option 3: The host tries to be malicious #my @available = @door; #@available = grep { $_ == $car_door } @door if $my_pick != $car_d +oor; my $opened = $available[ rand @available ]; if( $opened == $car_door ) { $my_pick == $car_door ? $skip_car++ : $skip_goat++; next; } ## Count my wins if I stick or switch $my_pick == $car_door ? $stick++ : $switch++; }
Makeshifts last the longest.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^9: Marilyn Vos Savant's Monty Hall problem
by tilly (Archbishop) on Aug 23, 2004 at 23:04 UTC | |
by BrowserUk (Patriarch) on Aug 23, 2004 at 23:28 UTC |