Probabilidades ao jogar dados com vantagem e desvantagem no Dungeons e Dragons 5E

Uma das diferenças que a 5ª edição de Dungeons and Dragons em relação às anteriores é a possibilidade de lançar dados com vantagem e desvantagem.

Em uma rolagem de dados tradicional, o jogador lança seu dado e o resultado obtido é o resultado final1. Em uma jogada com vantagem, o jogador lança dois dados e mantém o maior deles como resultado final. De modo análogo, uma jogada com desvantagem, o jogador lança dois dados e mantém o menor deles como resultado final.

Considerando um d20, que é o dado de 20 lados, cada lançamento de 1 a 20 tem 5% de chance de ocorrer. Eu criei os gráficos abaixo para ver como estas probabilidades mudam ao jogar os dados com vantagem e desvantagem.

O código para criar os gráficos está a seguir.

library(tidyverse)
theme_set(theme_minimal())

combinacoes <- 
  expand_grid(d1 = 1:20, d2 = 1:20) %>%
  rowwise() %>%
  mutate(max = max(d1, d2), min = min(d1, d2))

combinacoes %>%
  group_by(max) %>%
  count() %>%
  ungroup() %>%
  mutate(perc = n/sum(n)*100) %>%
  ggplot(aes(x = max, y = perc, label = perc, fill = perc)) +
  geom_col() +
  scale_fill_viridis_c(option = "C") +
  geom_text(aes(y = perc + .25),
            size = 3) +
  scale_x_continuous(breaks = 1:20) + 
  scale_y_continuous(breaks = NULL) + 
  labs(x = "Resultado Final com os Dois Dados", 
       y = "Percentual de Acerto do Resultado", 
       title = "Jogar 2d20 com Vantagem",
       caption = "marcusnunes.me") +
  theme(panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(),
        plot.title = element_text(hjust = 0.5),
        axis.text.x = element_text(vjust = 10),
        legend.position = "none")


combinacoes %>%
  group_by(min) %>%
  count() %>%
  ungroup() %>%
  mutate(perc = n/sum(n)*100) %>%
  ggplot(aes(x = min, y = perc, label = perc, fill = perc)) +
  geom_col() +
  scale_fill_viridis_c(option = "C", direction = -1) +
  geom_text(aes(y = perc + .25),
            size = 3) +
  scale_x_continuous(breaks = 1:20) + 
  scale_y_continuous(breaks = NULL) + 
  labs(x = "Resultado Final com os Dois Dados", 
       y = "Percentual de Acerto do Resultado", 
       title = "Jogar 2d20 com Desvantagem",
       caption = "marcusnunes.me") +
  theme(panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(),
        plot.title = element_text(hjust = 0.5),
        axis.text.x = element_text(vjust = 10),
        legend.position = "none")

  1. Descontando eventuais modificadores↩︎