Ajuda a calcular o conjunto de dados oposto em AnyDice

1

Eu preciso calcular a probabilidade de ganhar contra B . Tanto A como B lançam 1-15 d6s, aquele com mais dados de sucesso (SD) ganha.

Na verdade, existem 5 possíveis resultados:

  • CF: A's SD < B's SD -3
  • F: A's SD < B's SD
  • DR: A's SD = B's SD
  • S: A's SD > B's SD
  • CF: A's SD > B's SD +3

Um dado pode dar 4 resultados diferentes:

  • Roll 1: -1 SD
  • Roll 2-3: 0 SD
  • Roll 4-5: +1 SD
  • Roll 6: +2 SD

Eu quero ver a probabilidade de resultados A em diferentes situações, com o número de dados para A e B indo de 1 a 15.

Eu fiz algo em AnyDice , mas olhando mais para a documentação, acho que estraguei tudo completamente:

function: singledice DICE:n{
 if DICE = 1 {result : -1 }
 if DICE = 2 {result : 0 }
 if DICE = 3 {result : 0 }
 if DICE = 4 {result : 1 }
 if DICE = 5 {result : 1 }
 if DICE = 6 {result : 2 }
}

function: throw A dices{
 X: 0
 loop N over{1..A}{
   X : X + [singledice d6]
 }
 result: X
}

function: players K and L{
 CF:0
 F:0
 DR:0
 S:0
 CS:0
 loop G over{1..K}{
   loop H over{1..L}{
     C:[throw G dices]-[throw H dices]
     if C < -3 {CF:CF+1}else
     if C < -1 {F:F+1} else
     if C = 0 {DR:DR+1}else
     if C = 1 {S:S+1}else
     if C = 2 {S:S+1}else
     if C > 2 {CS:CS+1}
     }
}
result: {CF, F, DR, S, CS}
}

loop M over{1..15}{
  loop U over{1..15}{
    output [players M and U] named "[M] vs [U]"
  }
}
    
por David Corsalini 07.07.2015 / 10:27

1 resposta

Respondido por Jasper Flick, o criador do AnyDice: link

Aqui está o código

function: check A:n vs B:n {
 if A < B - 3 { result: -2 } \ CF \
 if A < B { result: -1 } \ F \
 if A > B + 3 { result: 2 } \ CS \
 if A > B { result: 1 } \ S \
 result: 0 \ DR \
}

SD: d{-1, 0:2, 1:2, 2}

loop A over {1..15} {
 A_POOL: AdSD
 loop B over {1..15} {
  output [check A_POOL vs BdSD] named "[A] vs [B]"
 }
}

Espero poder deixar isso aqui, há alguns truques que podem ser úteis para outros usuários (como o dado com probabilidades diferentes).

    
07.07.2015 / 10:59