FUNCTION trials(prisoners, iterations, optimal) DIM drawers(100) FOR i = 1 TO prisoners LET drawers(i) = i NEXT i FOR i = 1 TO iterations FOR k = 1 TO prisoners LET x = RND+1 LET p = drawers(x) LET drawers(x) = drawers(k) LET drawers(k) = p NEXT k FOR prisoner = 1 TO prisoners LET found = false IF optimal<>0 THEN LET drawer = prisoner ELSE LET drawer = RND+1 FOR j = 1 TO prisoners/2 LET drawer = drawers(drawer) IF drawer = prisoner THEN LET found = true EXIT FOR END IF IF (NOT optimal<>0) THEN LET drawer = RND+1 NEXT j IF (NOT found<>0) THEN EXIT FOR NEXT prisoner LET pardoned = pardoned+found NEXT i LET trials = (100*pardoned/iterations) END FUNCTION LET false = 0 LET true = 1 LET iterations = 10000 PRINT "Simulation count: "; iterations FOR prisoners = 10 TO 100 STEP 90 LET randon = trials(prisoners,iterations,false) LET optimal = trials(prisoners,iterations,true) PRINT "Prisoners: "; prisoners; ", random: "; randon; ", optimal: "; optimal NEXT prisoners END