playRandom = function(n) // using 0-99 instead of 1-100 pardoned = 0 numInDrawer = range(99) choiceOrder = range(99) for round in range(1, n) numInDrawer.shuffle choiceOrder.shuffle for prisoner in range(99) found = false for card in choiceOrder[:50] if card == prisoner then found = true break end if end for if not found then break end for if found then pardoned = pardoned + 1 end for return pardoned / n * 100 end function playOptimal = function(n) // using 0-99 instead of 1-100 pardoned = 0 numInDrawer = range(99) for round in range(1, n) numInDrawer.shuffle for prisoner in range(99) found = false drawer = prisoner for i in range(1,50) card = numInDrawer[drawer] if card == prisoner then found = true break end if drawer = card end for if not found then break end for if found then pardoned = pardoned + 1 end for return pardoned / n * 100 end function print "Random: " + playRandom(10000) + "%" print "Optimal: " + playOptimal(10000) + "%"