Simulation Patterns
Cumulative Runs
Tracking State
Simulation output is often easier to inspect as a running total. cumsum shows how each run changes accumulated state.
Program
Play the script to add a per-run bonus and watch the final cumulative score change.
cumulative_runs.R
Replay: real traced execution (multi-file project)
outcomes <- c(1, 0, 1, 1, 0, 1)
bonus <- 0
scores <- outcomes + bonus
running_total <- cumsum(scores)
final <- tail(running_total, 1)
cat(final, "\n", sep = "")
outcomes <- c(1, 0, 1, 1, 0, 1)
bonus <- 1
scores <- outcomes + bonus
running_total <- cumsum(scores)
final <- tail(running_total, 1)
cat(final, "\n", sep = "")
outcomes <- c(1, 0, 1, 1, 0, 1)
bonus <- 2
scores <- outcomes + bonus
running_total <- cumsum(scores)
final <- tail(running_total, 1)
cat(final, "\n", sep = "")
outcomes ← 1, 0, 1, 1, 0, 1
1outcomes <- c(1, 0, 1, 1, 0, 1)2bonus <- 0values this step1, 0, 1, 1, 0, 1outcomesbonus ← 0
1outcomes <- c(1, 0, 1, 1, 0, 1)2bonus <- 03scores <- outcomes + bonusvalues this step0bonusscores ← 1, 0, 1, 1, 0, 1
2bonus <- 03scores <- outcomes + bonus4running_total <- cumsum(scores)values this step1, 0, 1, 1, 0, 1scores1, 0, 1, 1, 0, 1outcomes0bonusrunning_total ← 1, 1, 2, 3, 3, 4
3scores <- outcomes + bonus4running_total <- cumsum(scores)5final <- tail(running_total, 1)values this step1, 1, 2, 3, 3, 4running_total1, 0, 1, 1, 0, 1scoresfinal ← 4
4running_total <- cumsum(scores)5final <- tail(running_total, 1)6cat(final, "\n", sep = "")values this step4final1, 1, 2, 3, 3, 4running_totalcat(final, " ", sep = "")
5final <- tail(running_total, 1)6cat(final, "\n", sep = "")output4values this step4final
outcomes ← 1, 0, 1, 1, 0, 1
1outcomes <- c(1, 0, 1, 1, 0, 1)2bonus <- 1values this step1, 0, 1, 1, 0, 1outcomesbonus ← 1
1outcomes <- c(1, 0, 1, 1, 0, 1)2bonus <- 13scores <- outcomes + bonusvalues this step1bonusscores ← 2, 1, 2, 2, 1, 2
2bonus <- 13scores <- outcomes + bonus4running_total <- cumsum(scores)values this step2, 1, 2, 2, 1, 2scores1, 0, 1, 1, 0, 1outcomes1bonusrunning_total ← 2, 3, 5, 7, 8, 10
3scores <- outcomes + bonus4running_total <- cumsum(scores)5final <- tail(running_total, 1)values this step2, 3, 5, 7, 8, 10running_total2, 1, 2, 2, 1, 2scoresfinal ← 10
4running_total <- cumsum(scores)5final <- tail(running_total, 1)6cat(final, "\n", sep = "")values this step10final2, 3, 5, 7, 8, 10running_totalcat(final, " ", sep = "")
5final <- tail(running_total, 1)6cat(final, "\n", sep = "")output10values this step10final
outcomes ← 1, 0, 1, 1, 0, 1
1outcomes <- c(1, 0, 1, 1, 0, 1)2bonus <- 2values this step1, 0, 1, 1, 0, 1outcomesbonus ← 2
1outcomes <- c(1, 0, 1, 1, 0, 1)2bonus <- 23scores <- outcomes + bonusvalues this step2bonusscores ← 3, 2, 3, 3, 2, 3
2bonus <- 23scores <- outcomes + bonus4running_total <- cumsum(scores)values this step3, 2, 3, 3, 2, 3scores1, 0, 1, 1, 0, 1outcomes2bonusrunning_total ← 3, 5, 8, 11, 13, 16
3scores <- outcomes + bonus4running_total <- cumsum(scores)5final <- tail(running_total, 1)values this step3, 5, 8, 11, 13, 16running_total3, 2, 3, 3, 2, 3scoresfinal ← 16
4running_total <- cumsum(scores)5final <- tail(running_total, 1)6cat(final, "\n", sep = "")values this step16final3, 5, 8, 11, 13, 16running_totalcat(final, " ", sep = "")
5final <- tail(running_total, 1)6cat(final, "\n", sep = "")output16values this step16final
cumsum
`cumsum(scores)` returns the accumulated total after each run.
state
A running total is a compact way to inspect simulation state over time.
tail
`tail(running_total, 1)` selects the final simulated state.