Como você gostaria
Se você realmente quiser fazer o somatório diretamente no código, provavelmente a maneira mais fácil seria usar uma função auxiliar assim:
function: COUNT:n minimum MIN:n {
if COUNT < 0 { result: -1 }
if COUNT < MIN { result: 0 }
result: 1
}
Isso leva apenas um número COUNT
(que pode ser o resultado de qualquer jogada de dados) e compara com um número de alvo MIN
, retornando -1 se a contagem for negativa, 0 se for negativa, mas menos que o alvo, e 1 se for igual ou maior que o alvo. Plotagem, e. [[roll X d NORMAL] minimum 4]
lhe dará as probabilidades que você solicitou diretamente.
É claro que também é fácil fazer um loop em uma variedade de tamanhos de conjuntos de dados , se é isso o que você quer.
O outro caminho
Não há necessidade de escrever código extra para isso, já que a interface do usuário AnyDice já fornece os modos "At Least" e "At Most" que somam automaticamente as probabilidades de saída.
Por exemplo, executando o código de Jasper Flick de esta resposta (que, por padrão, usa DIFFICULTY: 7
e X: 4
dice) e clicando no botão "Pelo menos" fornece a seguinte saída:
Olhando para a barra rotulada "4" em cada gráfico, podemos ver que a probabilidade de rolar pelo menos 4 sucessos (com 4 dados contra dificuldade 7, neste caso) é normalmente 2,56%, e sobe para 11,86% com especialização, 15,36% com força de vontade e 27,94% com ambos.
Da mesma forma, olhar para a barra rotulada "0" na mesma saída fornece a probabilidade de não falhar (já que o código trata uma rolagem falha como -1 sucessos), que é 93.29% sem força de vontade (e 100% com isso). Para obter a probabilidade de alterar o teste, você pode subtrair isso de 100% (e, com sorte, obter 6,71%), ou apenas mudar para o modo "At Most" e olhe para a barra "-1".