Simulation Patterns
Threshold Trials
Counting Successes
A simulation often turns numeric draws into success or failure flags. A threshold defines which draws count as successful.
Program
Play the script to move the threshold and watch the success rate change.
threshold_trials.R
Replay: real traced execution (multi-file project)
draws <- c(0.12, 0.91, 0.44, 0.68, 0.27)
threshold <- 0.50
success <- draws >= threshold
success_count <- sum(success)
rate <- success_count / length(draws)
cat(rate, "\n", sep = "")
draws <- c(0.12, 0.91, 0.44, 0.68, 0.27)
threshold <- 0.30
success <- draws >= threshold
success_count <- sum(success)
rate <- success_count / length(draws)
cat(rate, "\n", sep = "")
draws <- c(0.12, 0.91, 0.44, 0.68, 0.27)
threshold <- 0.70
success <- draws >= threshold
success_count <- sum(success)
rate <- success_count / length(draws)
cat(rate, "\n", sep = "")
draws ← 0.12, 0.91, 0.44, 0.68, 0.27
1draws <- c(0.12, 0.91, 0.44, 0.68, 0.27)2threshold <- 0.50values this step0.12, 0.91, 0.44, 0.68, 0.27drawsthreshold ← 0.50
1draws <- c(0.12, 0.91, 0.44, 0.68, 0.27)2threshold <- 0.503success <- draws >= thresholdvalues this step0.50thresholdsuccess ← FALSE, TRUE, FALSE, TRUE, FALSE
2threshold <- 0.503success <- draws >= threshold4success_count <- sum(success)values this stepFALSE, TRUE, FALSE, TRUE, FALSEsuccess5 drawsdraws0.50thresholdsuccess_count ← 2
3success <- draws >= threshold4success_count <- sum(success)5rate <- success_count / length(draws)values this step2success_count2 TRUE valuessuccessrate ← 0.4
4success_count <- sum(success)5rate <- success_count / length(draws)6cat(rate, "\n", sep = "")values this step0.4rate2success_count5length(draws)cat(rate, " ", sep = "")
5rate <- success_count / length(draws)6cat(rate, "\n", sep = "")output0.4values this step0.4rate
draws ← 0.12, 0.91, 0.44, 0.68, 0.27
1draws <- c(0.12, 0.91, 0.44, 0.68, 0.27)2threshold <- 0.30values this step0.12, 0.91, 0.44, 0.68, 0.27drawsthreshold ← 0.30
1draws <- c(0.12, 0.91, 0.44, 0.68, 0.27)2threshold <- 0.303success <- draws >= thresholdvalues this step0.30thresholdsuccess ← FALSE, TRUE, TRUE, TRUE, FALSE
2threshold <- 0.303success <- draws >= threshold4success_count <- sum(success)values this stepFALSE, TRUE, TRUE, TRUE, FALSEsuccess5 drawsdraws0.30thresholdsuccess_count ← 3
3success <- draws >= threshold4success_count <- sum(success)5rate <- success_count / length(draws)values this step3success_count3 TRUE valuessuccessrate ← 0.6
4success_count <- sum(success)5rate <- success_count / length(draws)6cat(rate, "\n", sep = "")values this step0.6rate3success_count5length(draws)cat(rate, " ", sep = "")
5rate <- success_count / length(draws)6cat(rate, "\n", sep = "")output0.6values this step0.6rate
draws ← 0.12, 0.91, 0.44, 0.68, 0.27
1draws <- c(0.12, 0.91, 0.44, 0.68, 0.27)2threshold <- 0.70values this step0.12, 0.91, 0.44, 0.68, 0.27drawsthreshold ← 0.70
1draws <- c(0.12, 0.91, 0.44, 0.68, 0.27)2threshold <- 0.703success <- draws >= thresholdvalues this step0.70thresholdsuccess ← FALSE, TRUE, FALSE, FALSE, FALSE
2threshold <- 0.703success <- draws >= threshold4success_count <- sum(success)values this stepFALSE, TRUE, FALSE, FALSE, FALSEsuccess5 drawsdraws0.70thresholdsuccess_count ← 1
3success <- draws >= threshold4success_count <- sum(success)5rate <- success_count / length(draws)values this step1success_count1 TRUE valuesuccessrate ← 0.2
4success_count <- sum(success)5rate <- success_count / length(draws)6cat(rate, "\n", sep = "")values this step0.2rate1success_count5length(draws)cat(rate, " ", sep = "")
5rate <- success_count / length(draws)6cat(rate, "\n", sep = "")output0.2values this step0.2rate
threshold
`draws >= threshold` converts numeric draws into logical success flags.
sum logical
`sum(success)` counts `TRUE` values because `TRUE` acts like 1.
rate
A simulated rate is a count divided by the number of trials.