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.

bonus
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 = "")
  1. outcomes ← 1, 0, 1, 1, 0, 1

    1outcomes <- c(1, 0, 1, 1, 0, 1)2bonus <- 0
    values this step1, 0, 1, 1, 0, 1outcomes
  2. bonus ← 0

    1outcomes <- c(1, 0, 1, 1, 0, 1)2bonus <- 03scores <- outcomes + bonus
    values this step0bonus
  3. scores ← 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, 1outcomes0bonus
  4. running_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, 1scores
  5. final ← 4

    4running_total <- cumsum(scores)5final <- tail(running_total, 1)6cat(final, "\n", sep = "")
    values this step4final1, 1, 2, 3, 3, 4running_total
  6. cat(final, " ", sep = "")

    5final <- tail(running_total, 1)6cat(final, "\n", sep = "")
    output4
    values this step4final
  1. outcomes ← 1, 0, 1, 1, 0, 1

    1outcomes <- c(1, 0, 1, 1, 0, 1)2bonus <- 1
    values this step1, 0, 1, 1, 0, 1outcomes
  2. bonus ← 1

    1outcomes <- c(1, 0, 1, 1, 0, 1)2bonus <- 13scores <- outcomes + bonus
    values this step1bonus
  3. scores ← 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, 1outcomes1bonus
  4. running_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, 2scores
  5. final ← 10

    4running_total <- cumsum(scores)5final <- tail(running_total, 1)6cat(final, "\n", sep = "")
    values this step10final2, 3, 5, 7, 8, 10running_total
  6. cat(final, " ", sep = "")

    5final <- tail(running_total, 1)6cat(final, "\n", sep = "")
    output10
    values this step10final
  1. outcomes ← 1, 0, 1, 1, 0, 1

    1outcomes <- c(1, 0, 1, 1, 0, 1)2bonus <- 2
    values this step1, 0, 1, 1, 0, 1outcomes
  2. bonus ← 2

    1outcomes <- c(1, 0, 1, 1, 0, 1)2bonus <- 23scores <- outcomes + bonus
    values this step2bonus
  3. scores ← 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, 1outcomes2bonus
  4. running_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, 3scores
  5. final ← 16

    4running_total <- cumsum(scores)5final <- tail(running_total, 1)6cat(final, "\n", sep = "")
    values this step16final3, 5, 8, 11, 13, 16running_total
  6. cat(final, " ", sep = "")

    5final <- tail(running_total, 1)6cat(final, "\n", sep = "")
    output16
    values 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.