AnyDice: Como calcular o vencedor em jogadas opostas em várias rodadas?

5

Estou tendo alguma dificuldade em fazer jogadas opostas em várias rodadas.

Estou procurando um personagem vs. estatísticas de personagem. Eu os chamo de "Novato" e "Inimigo", respectivamente. Eu quero saber quais são as chances de o Novato ganhar sobre o Inimigo ao longo de X rodadas. Estou tentando ver como os modificadores afetam dois personagens brigando entre si por muitas rodadas / turnos de jogo.

Exemplo:

  • Rookie Rolls 1d20 + 0
  • Rolos de inimigos 1d20 + 2
  • Se Novato> Inimigo, Sucesso Novato
  • Se Rookie <Inimigo, Rookie Loss
  • Se Novato = Inimigo, Empate - Deve ter Sucesso ou Perda, então role novamente
  • As melhores rodadas 3 das séries 5 fazem um conjunto
  • Se o estreante obtiver sucessos do 3, eles vencem o set
  • Se o Inimigo obtiver sucessos do 3, o Novato perde o set
  • Isso não precisa acontecer em uma linha

Quero saber as chances de sucesso do estreante vencendo um 3 do set do 5. Acabei brutalmente forçando isso em C # com milhões de rolos 1 - exceto erros, estou vendo o novato ganhar sets sobre 28.8% 31.8% do tempo.

Alguma ideia? Obrigado!

Link para o código AnyDice

X: 5 MODFORROOKIE: 0 MODFORENEMY: saída 2 1d20 + MODFORROOKIE> 1d20 + MODFORENEMY denominado "d20: sucesso de estreantes na rodada 1" saída 1d20 + MODFORROOKEN = 1dXNXX20 " MODFORROOKIE> 20d1 + MODFORENEMY em Xd1] chamado "d20: Novatos nº de sucessos em rodadas X" saída [contagem 1d20 + MODFORROOKIE = 20d20 + MODFORENEMY em Xd1] rodadas de Xd20] em rodadas ":
por baylisssm 22.06.2019 / 16:14

2 respostas

Uma solução analítica para este sistema vem em três partes.

Primeiro, para um único conjunto de jogadas opostas, quais são as probabilidades de uma vitória, perda ou empate para o Novato? Você pode forçar isso contando os resultados de todos \ $ 20 \ times 20 = 400 \ $ possibilidades. No entanto, você pode simplificar isso com probabilidades condicionais, portanto, por exemplo $$ P (vitória \ rolagem no espaço) = \ soma_ {R_i} P (R_i) \ vezes P (vitória, R_i) $$ \ $ P (R_i) \ $ é a probabilidade de qualquer rolagem individual do Novato e é sempre \ $ \ frac 1 {20} \ $. \ $ P (vitória, R_i) \ $ é a probabilidade de o novato ganhar se rolou \ $ R_i \ $. Então se \ $ R_i = 1 \ $, O novato não pode ganhar e \ $ P (vitória, 1) = 0 \ $. Se \ $ R_i = 20 \ $, O Novato vencerá se o Inimigo fizer algo menos que 18 (que produz um empate) e \ $ P (vitória, 20) = \ frac {1} {17} \ $. Siga esse raciocínio para todos os valores de \ $ R_i \ $ e execute a soma acima e você obtém \ $ P (vitória \ espaço rolado) = 0.3825 \ $.

Raciocínio semelhante produzirá \ $ P (empate \ rolo de espaço) = 0.045 \ $ e \ $ P (perda \ espaço em rolo) = 0.5725 \ $.

Segundo, como os empates desencadeiam um relançamento, precisamos calcular a probabilidade de uma vitória, possivelmente após uma sequência de empates. Vamos chamar essa sequência de testes de teste. A probabilidade de ganhar um teste é a probabilidade de ganhar no primeiro teste, mais a probabilidade de empatar o primeiro teste e ganhar o segundo mais a probabilidade de empatar os dois primeiros e ganhar o terceiro etc. $$ P (vitória \ teste de espaço) = P (w \ espaço r) + P (t \ espaço r) \ vezes P (w \ espaço r) + P (t \ espaço r) ^ 2 \ vezes P (w \ space r) + ... $$ or $$ P (vitória \ teste de espaço) = \ sum_ {n = 0} ^ {\ infty} P (vitória \ rolagem no espaço) \ vezes P (empate \ rolagem no espaço) ^ n $$ Esta é uma série geométrica infinita, o que simplificará a $$ P (teste de win \ space) = \ frac {P (win \ roll de espaço)} {1 - P (empate \ roll de espaço)} = 0.400524 $$

Finalmente, precisamos da probabilidade de ganhar vezes suficientes em um grupo de testes. Vamos chamar isso de partida. Você especificou uma correspondência com o melhor de cinco, então vamos ver isso. $$ P (vitória \ correspondência de espaço) = P (3w, 5t) + P (4w, 5t) + P (5w, 5t) $$ As probabilidades individuais são dadas apenas pelo distribuição binomial: a probabilidade de \ $ k \ $ vence fora de \ $ n \ $ ensaios é $$ P (k, n) = \ frac {n!} {K! (Nk)!} \ Times P (vitória / teste de espaço) ^ k \ times (1 - P (vitória / teste de espaço)) ^ {nk } $$ Conecte os números e você obtém \ $ P (vitória \ correspondência de espaço) = 0.318345 \ $

Isso deve ser adaptável a vários concursos diferentes. Basta alterar os números no estágio apropriado do cálculo.

Não sei por que há uma discrepância entre sua simulação e esse resultado. Estou bastante confiante em minha matemática, porque fiz várias verificações cruzadas ao longo do caminho. Observarei que um número fixo de rolos não produz um número fixo de tentativas. Haverá um número médio de tentativas, mas se elas não forem contadas corretamente, isso poderá prejudicar seu cálculo.

25.06.2019 / 18:40

Claro que, também há uma maneira de fazer isso no AnyDice.

Primeiro, precisamos de algumas funções auxiliares que, infelizmente, ainda não foram incorporadas ao AnyDice por padrão. Este é útil para determinar se uma jogada oposta é uma vitória, uma perda ou um empate:

função: sinal de NÚMERO: n {se NÚMERO> 0 {resultado: + 1} se NÚMERO <0 {resultado: -1} resultado: 0}

Podemos usá-lo, por exemplo:

ROOKIE: d20 + 0 INIMIGO: d20 + 2 WINNER: [sinal de ROOKIE - ENEMY] VENCEDOR de saída chamado "rodada única: + 1 = vitória do novato, -1 = vitória do inimigo, 0 = empate"

Em seguida, precisamos de uma função para rolar novamente os laços, algo como o desta resposta:

função: restringir ROLL: n a RANGE: s {se ROLL = RANGE {resultado: ROLL} else {resultado: d {}}}

Podemos usá-lo assim para obter a probabilidade de o Rookie vencer, depois que os empates forem re-rolados:

ROUND: [restringir WINNER a {+ 1, -1}] = + SAÍDA 1 ROUND denominada "rodada única com rerolls: 1 = vitória de estreante, 0 = vitória de inimigo"

E finalmente, podemos pegar o dado tendencioso ROUND, que rola o 1 com a probabilidade de o estreante ganhar uma única rodada e o 0 de outra forma, e apenas traça o resultado de rolar cinco vezes:

5dROUND chamado "número de vitórias de estreante nas rodadas 5"

Podemos então ler o resultado diretamente desta saída, pelo menos depois de clicar no botão "Pelo menos":

Screenshot

Ou, se preferir, você pode comparar diretamente o número de vitórias de estreante contra o 3 e gerar essa figura:

saída 5dROUND> = 3 chamado "probabilidade de Rookie ganhar pelo menos 3 rodadas de 5"
30.06.2019 / 21:48