Como posso usar o AnyDice para obter as chances de uma sequência numérica específica do rolamento 3d10 e descartar o menor dado?

5

Eu não sou muito experiente com o programa ou programação em geral, e estou preso. Eu consegui descobrir como obter a probabilidade de diferentes somas de maior 2 de 3d10:

output [highest 2 of 3d10]

E de outro post também encontrei uma maneira de calcular a probabilidade de uma certa combinação de n números de dados:

function: compare A:s and B:s {
  result: A = B
}
output [compare 2d10 and {10, 1}]

O que eu estou procurando é algo como:

function: compare A:s and B:s {
  result: A = B
}
output [compare highest 2 of 3d10 and {10, 1}]

Eu estou querendo saber se alguém sabe como fazer isso e está disposto a ajudar.

    
por Leo 26.11.2018 / 10:15

1 resposta

Bem, vamos escrever sua função para você :

function: compare highest N:n of ROLL:s and SEQ:s {
  loop I over {1..N} {
    if I@ROLL != I@SEQ { result: 0 }
  }
  result: 1
}

Esta função apenas compara os primeiros N elementos das seqüências ROLL e SEQ um por um. (Se as sequências forem classificadas em ordem numérica decrescente, como AnyDice classifica os rolos de dados por padrão, esses serão os elementos N highest.) Se algum deles for diferente, ele para e retorna 0; se todos corresponderem, ele retorna 1.

Quando um pool de dados é passado como um (ou até mesmo ambos) dos parâmetros para essa função, AnyDice chama automaticamente a função para cada uma das possíveis seqüências de dados produzidos pelo roll (s) e coleta os resultados em uma polarização dado representando a probabilidade da função retornar cada um dos seus possíveis valores de resultado.

O ponto chave para perceber aqui é que, ao passar um conjunto de dados para uma função esperando uma sequência como essa, o AnyDice não fornece nenhuma maneira prática de obter as seqüências individuais de dados rolados para fora. > da função. Tudo o que podemos conseguir é um único dado inclinado. Isso significa que, qualquer que seja a manipulação que queremos fazer com as sequências, teremos que fazer dentro da função.

Como alternativa, eu poderia ter usado a função highest NUMBER of sequence SEQUENCE de

function: compare highest N:n of ROLL:s and SEQ:s {
  result: [highest N of sequence ROLL] = [highest N of sequence SEQ]
}

Mas, além de requerer outra função customizada como um auxiliar, esta versão também é provavelmente um pouco menos eficiente, já que ela precisa fazer um loop em ambas as seqüências de entrada para fazer cópias parciais delas. A primeira versão acima faz a mesma coisa com apenas um único loop e nenhuma cópia de sequência.

    
28.11.2018 / 18:25