The Do or Die twist was first unleashed into the world during Season 41. It returned for season 42. I have the controversial opinion that I like Do or Die, although I do think the penalty is too severe. I like the game theory element. This is why I want to look at the best decision to make if you are in this situation and the odds of being safe in the game.

## What is it?

At the late stage in the game (in this case final 7) Jeff announces the Do or Die twist before the immunity challenge. In a nutshell

- The first to drop in the challenge must play a game of chance at Tribal.
- If you win you are immune from the vote
- If you lose you go home immediately and there is no vote

- You can choose to participate or sit out of the challenge, forgoing the chance at immunity but also avoiding the game of chance. If no one is elimintated from Do or Die there is still a vote.

Jeff hands two rocks to all the castaways. They have to choose if they will participate or sit out in secret. They then reveal their choice.

I love the game theory at this stage of the game. Should you participate in the challenge or not? Who else is going to participate? Do I feel safe enough to sit out? I think this is the best part of the twist.

The game of chance is the Monty Hall problem. Essentially you have to choose 1 of 3 boxes. One box is the flame and you are safe. The other two a skull and you go home. Once you choose one, Jeff removes one of the other boxes and asks if you want to switch. The correct strategy is to switch which is a 2/3 probability of success. If you stay with your original selection it is only a 1/3 chance. I’ll leave it up to you to read up more as to why.

I want to look into the different scenarios that can play out and the odds of success in Do or Die.

## The scenarios and probability of success

There are really only 2 decisions to make:

- Do I participate in the immunity challenge?
- If I do, do I switch or stay during the game of chance?

The unknowns that affect the possible success or failure are:

- Who else participates in the challenge?
- How likely is it I will win the challenge?
- If someone else is the first to drop, do they switch or stay?

This part is where the game theory component comes in. Each castaway has to weigh up who they can beat, will they participate or are the odds better if I just sit out. This is also an unknown for this analysis so to simplify it I will assume each player has an equal chance of winning the challenge. This obviously isn’t true, but it is a place to start.

I’m going to calculate 3 probabilities:

**Sit out**– What is the probability of being safe and surviving Tribal if you choose to sit out? In the case (most of them) where someone participates in the challenge, loses, and has to play Do or Die, we don’t know what they will do. They may choose to swap or stay with their pick. This is a random variable that we’ll need to make an assumption for. Choosing an equal probability of 1/2 is fine to begin with, I think it’s fair that it’s greater than 1/2 since many people know of Monty Hall and that it is better to swap.**Challenge + swap**– The probability of participating in the challenge and swapping IF you lose and have to play Do or Die. In this case, there is a chance you will win the challenge and be immune. Or at least not drop first but are still vulnerable during the vote. If you didn’t win and didn’t lose, someone else lost and has to play Do or Die. They could be eliminated and there’s no vote. This has to be accounted for.**Challenge + don’t swap****–**The probability of participating in the challenge and not swapping if you have to play Do or Die.

First of all, let’s consider the situation where there were 7 people left and 2 decided to participate in the challenge, the decision Lindsay and Jonathan made. Run the `do_or_die`

function to calculate the probabilities.

```
do_or_die <- function(
n_cast,
n_challenge,
p_win_challenge = NULL,
p_to_swap = 0.5,
p_voted_out = NULL
) {
# probabilities
p_win_challenge <- ifelse(is.null(p_win_challenge), 1/n_challenge, p_win_challenge)
p_first_out <- 1/(n_challenge-1)*(1-p_win_challenge)
# Monty Hall probs
p_swap <- 2/3
p_dont_swap <- 1-p_swap
# if there is a vote 2 people are immune and can't be voted for
p_random_vote <- ifelse(is.null(p_voted_out), (n_cast-3)/(n_cast-2), 1-p_voted_out)
p_ls <- list()
# sat out they swapped
p_ls[["sat out they swapped"]] <- p_swap*p_random_vote + (1-p_swap)
# sat out they didn't swap
p_ls[["sat out they didnt swap"]] <- p_dont_swap*p_random_vote + (1-p_dont_swap)
# sat out
p_ls[["sit out"]] <- p_ls[["sat out they swapped"]]*p_to_swap + p_ls[["sat out they didnt swap"]]*(1-p_to_swap)
# challenged
# middle means challenged but didn't win or lose
p_middle <- (1-p_first_out-p_win_challenge)*p_ls[["sit out"]]
p_ls[["challenge + swap"]] <- p_first_out*p_swap + p_middle + p_win_challenge
p_ls[["challenge + dont swap"]] <- p_first_out*p_dont_swap + p_middle + p_win_challenge
tibble(
n_cast = n_cast,
n_challenge = n_challenge,
p_to_swap = p_to_swap,
event = names(p_ls),
probability = round(unlist(p_ls), 3)
) |>
filter(!str_detect(event, "out they")) |>
pivot_wider(names_from = event, values_from = probability)
}
do_or_die(7, 2)
# A tibble: 1 x 6
n_cast n_challenge p_to_swap `sit out` `challenge + swap` `challenge + dont swap`
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 7 2 0.5 0.9 0.833 0.667
```

Under this scenario, the best option is to actually sit out of the challenge.

- Sit out: 90%
- Challenge + swap: 83.3%
- Challenge + don’t swap: 66.7%

If you do participate it’s clearly the better option to swap your choice at Do or Die.

How many people participate in the challenge affects your chances of making it through. I ran the `do_or_die`

function for each case where 2 to 7 (everyone) participates in the challenge.

```
map_dfr(7:2, ~do_or_die(7, .x))
```

Based on these results, assuming an equal chance to win a challenge and an equal chance to be voted out, the best option is to always sit out.

Extending the analysis to the final 10 and final 12 shows that the more players there are, the better chances of surviving Tribal by sitting out or participating in the challenge. That’s not surprising though.

What if someone believed they had at least a 50% shot at winning the challenge, regardless of who or how many participate, and little chance of being the first out? In this case, the scale is tipped and it is, in general, better to participate in the challenge.

This is more or less an unknown and up to the judgment of the player. You can use the function to run different scenarios such as the probability of winning being 75%, 90%, 10%, etc.

Another unknown is the probability of being voted out if there is a vote. Let’s consider the case, which isn’t too dissimilar from Jonathan’s, that there is a 100% chance to be voted out if there is a vote and not immune. The function includes a parameter `p_voted_out`

, the probability of being voted out. Let’s also assume that the loser of the challenge knows the Monty Hall problem so they swap their choice. A perfect storm.

```
do_or_die(7, 2, p_voted_out = 1, p_to_swap = 1)
# A tibble: 1 x 6
n_cast n_challenge p_to_swap `sit out` `challenge + swap` `challenge + dont swap`
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 7 2 1 0.333 0.833 0.667
map_dfr(7:2, ~do_or_die(7, .x, p_voted_out = 1, p_to_swap = 1))
```

In this case, there is only a 33% of being safe at Tribal, and far better to participate in the challenge. Even if there is a 0% chance of winning, there is still a 67% of being immune after playing the game of chance. It also means the more people that participate in the challenge, the lower the chances of surviving.

I think this is great because you can tank the challenge in order to play the game of chance giving you the best shot at getting through Tribal. It’s also better odds than the shot-in-the-dark. You can play around with different scenarios using the function.

One thing I haven’t considered here is the *probability *of the number of players that will participate in the challenge. The above numbers are assuming that number participated. But I think it’s fair to say that it’s more likely that some will sit out and some will participate rather than all participating. This will also change the overall probabilities of the strategies, but I’ll leave it there for now.

## Closing thoughts

All things being equal it is usually better to sit out rather than fight for immunity. But things aren’t always equal. The players know if they have a good chance at winning the challenge or not and whether or not winning immunity is effectively do or die anyway since they’re on the chopping block. Again, why I like it!

It is important to keep in mind that they didn’t know the game of chance was Monty Hall. If in future seasons the game of chance is different it could change all of this.

## Simulation

I validated these results using a simulation of outcomes with the given parameters. The code for running the sim is below.

```
do_or_die_sim <- function(
n_cast,
n_challenge,
challenge,
swap,
p_win_challenge = NULL,
p_to_swap = 0.5,
p_voted_out = NULL
) {
# probabilities
p_win_challenge <- ifelse(is.null(p_win_challenge), 1/n_challenge, p_win_challenge)
p_first_out <- ifelse(p_win_challenge == 1, 0, 1/(n_challenge-1)*(1-p_win_challenge))
p_middle <- 1-p_win_challenge-p_first_out
# Monty Hall probs
p_swap <- 2/3
p_dont_swap <- 1-p_swap
# if there is a vote 2 people are immune and can't be voted for
p_random_vote <- ifelse(is.null(p_voted_out), (n_cast-3)/(n_cast-2), 1-p_voted_out)
go_to_vote <- FALSE
# resolve events
if(challenge) {
result <- sample(c("first out", "middle", "won"), 1, prob = c(p_first_out, p_middle, p_win_challenge))
if(result == "won") {
safe <- TRUE
} else if(result == "first out") {
# play do or die
if(swap) {
safe <- rbernoulli(1, p_swap)
} else {
safe <- rbernoulli(1, p_dont_swap)
}
} else if(result == "middle") {
# go to a vote
go_to_vote <- TRUE
}
}
if(!challenge | go_to_vote) {
# is there are vote?
if(swap) {
vote <- rbernoulli(1, p_swap)
} else {
vote <- rbernoulli(1, p_dont_swap)
}
# the vote
if(vote) {
safe <- rbernoulli(1, p_random_vote)
} else {
safe <- TRUE
}
}
safe
}
mean(map_lgl(1:1e5, ~do_or_die_sim(7, 2, TRUE, TRUE, 0.5)))
```