Data update
This commit is contained in:
parent
5150844a7d
commit
4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions
|
|
@ -1,51 +0,0 @@
|
|||
use Random;
|
||||
|
||||
param doors: int = 3;
|
||||
config const games: int = 1000;
|
||||
|
||||
config const maxTasks = 32;
|
||||
var numTasks = 1;
|
||||
while( games / numTasks > 1000000 && numTasks < maxTasks ) do numTasks += 1;
|
||||
const tasks = 1..#numTasks;
|
||||
const games_per_task = games / numTasks ;
|
||||
const remaining_games = games % numTasks ;
|
||||
|
||||
var wins_by_stay: [tasks] int;
|
||||
|
||||
coforall task in tasks {
|
||||
|
||||
var rand = new RandomStream();
|
||||
|
||||
for game in 1..#games_per_task {
|
||||
var player_door = (rand.getNext() * 1000): int % doors ;
|
||||
var winning_door = (rand.getNext() * 1000): int % doors ;
|
||||
if player_door == winning_door then
|
||||
wins_by_stay[ task ] += 1;
|
||||
}
|
||||
|
||||
if task == tasks.last then {
|
||||
for game in 1..#remaining_games {
|
||||
var player_door = (rand.getNext() * 1000): int % doors ;
|
||||
var winning_door = (rand.getNext() * 1000): int % doors ;
|
||||
if player_door == winning_door then
|
||||
wins_by_stay[ task ] += 1;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var total_by_stay = + reduce wins_by_stay;
|
||||
|
||||
var total_by_switch = games - total_by_stay;
|
||||
var percent_by_stay = ((total_by_stay: real) / games) * 100;
|
||||
var percent_by_switch = ((total_by_switch: real) / games) * 100;
|
||||
|
||||
writeln( "Wins by staying: ", total_by_stay, " or ", percent_by_stay, "%" );
|
||||
writeln( "Wins by switching: ", total_by_switch, " or ", percent_by_switch, "%" );
|
||||
if ( total_by_stay > total_by_switch ){
|
||||
writeln( "Staying is the superior method." );
|
||||
} else if( total_by_stay < total_by_switch ){
|
||||
writeln( "Switching is the superior method." );
|
||||
} else {
|
||||
writeln( "Both methods are equal." );
|
||||
}
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
use Random;
|
||||
|
||||
config const numGames = 100_000_000;
|
||||
|
||||
var switch, stick: uint;
|
||||
|
||||
// have a separate RNG for each task; add together the results at the end
|
||||
forall i in 1..numGames
|
||||
with (var rand = new RandomStream(uint, parSafe = false), + reduce stick)
|
||||
{
|
||||
var chosen_door = rand.getNext() % 3;
|
||||
var winner_door = rand.getNext() % 3;
|
||||
if chosen_door == winner_door then
|
||||
stick += 1;
|
||||
}
|
||||
|
||||
// if you lost by sticking it means you would have won by switching
|
||||
switch = numGames - stick;
|
||||
writeln("Over ", numGames, " games:\n - switching wins ",
|
||||
100.0*switch / numGames, "% of the time and\n - sticking wins ",
|
||||
100.0*stick / numGames, "% of the time");
|
||||
Loading…
Add table
Add a link
Reference in a new issue