Quaisquer probabilidades de dados que permitam a adição ou subtração de um dado de outro

3

Sou novato em qualquer dado, então me perdoe se ignorei algo óbvio, mas não consigo entender isso.

Estou trabalhando em uma mecânica de dados que permite ao jogador escolher se deve ou não adicionar ou subtrair o seu dado de base para / de outro dado.

Posso fazer d10 + d6, posso fazer d10 - d6, como faço para d10 + | - d6?

por Michael Conn 27.02.2017 / 19:57

2 respostas

Aqui está uma função AnyDice genérica para misturar igualmente dois possíveis dados diferentes:

função: mix A: de B: d ponderada por X: n {se X = 1 {resultado: A} else {resultado: B}} função: mix A: de B: d {resultado: [mix A e B ponderada por d2]}

Por exemplo, a expressão [misture 1d10 + 1d6 e 1d10 - 1d6] retornará a distribuição dos resultados obtidos rolando um d10 e um d6 e escolhendo aleatoriamente se deseja adicionar ou subtrair o d6 do d10. A distribuição de probabilidade resultante, plotada como um gráfico de linhas, ficará assim:

Screenshot

Claro, na sua pergunta você diz que o jogador chega ao escolher se você deseja adicionar ou subtrair o d6 e provavelmente não o fará aleatoriamente. Como você não nos disse o que o jogador está tentando obter com o teste, é difícil dar uma resposta específica, mas uma técnica geral para modelar essa mecânica de escolha de jogador no AnyDice é escrever uma função que aproveite o possível resultados dos dois rolos (ou seja, dois número parâmetros, marcados com :n) e retorna o mais favorável ao jogador (o que for).

Para um exemplo aleatório, se o jogador estiver tentando rolar o mais próximo possível do 10, você pode escrever sua função de decisão assim:

função: melhor de A: ne B: n {se [absoluto A - 10] <[absoluto B - 10] {resultado: A} mais {resultado: B}}

No entanto, observe que há um problema: se você chamar essa função como [melhor de 1d10 + 1d6 e 1d10 - 1d6], na verdade, você está modelando um mecânico no qual o player primeiro roda 1d10 + 1d6 e, em seguida, separadamente rola 1d10 - 1d6 e escolhe o melhor desses dois rolos independentes. Se você deseja que o player role um único d10 e um único d6 e escolha adicionar ou subtraí-los, precisará de uma função auxiliar para "congelar" os rolos d10 e d6 antes de adicioná-los e subtraí-los, assim:

função: melhor de A: n mais menos B: n {resultado: [melhor de A + B e AB]}

As distribuições de probabilidade resultantes, para vários números de destino, ficará assim:

Screenshot

Analisar de fato os efeitos de jogabilidade de todas essas distribuições de probabilidade de aparência descolada é deixado como um exercício para o leitor. ;)


Ps. o [melhor de A e B] A função que dei acima é levemente tendenciosa, pois sempre escolherá a segunda opção se ambas forem igualmente boas (ou seja, a mesma distância do 10). Você pode fazer o viés ir para o outro lado, apenas alterando o < para dentro <=, mas se você quiser eliminá-lo completamente (quebrando os laços aleatoriamente), poderá reescrever a função da seguinte maneira:

função: melhor de A: ne B: n {se [absoluto A - 10] <[absoluto B - 10] {resultado: A} se [absoluto A - 10]> [absoluto B - 10] {resultado: B} resultado: 1d {A, B}}

Esse código primeiro verifica se um rolo é estritamente melhor que o outro e, em caso afirmativo, escolhe isso. Se os rolos A e B são igualmente bons, em vez disso, retorna um dado personalizado que rolará A or B com igual probabilidade, simulando uma escolha aleatória. (Obviamente, se você tiver outros critérios para romper o vínculo, poderá inserir if antes da última linha da função acima, ou mesmo substitua a última linha completamente, se você souber que ela nunca será executada.)

Surpreendentemente, fazer essa alteração no código de exemplo acima muda bastante a aparência dos gráficos:

Screenshot

Na verdade, com esse exemplo em particular, talvez não seja tão surpreendente: com um número-alvo entre 1 e 10, você tem uma chance de 10% de rolar exatamente esse número no d10, nesse ponto (se você está apenas apontando o mais próximo possível) quanto possível ao destino, como o exemplo assume), não faz diferença se você adiciona ou subtrai o rolo d6. Portanto, quebrar esses vínculos aleatoriamente, em vez de sempre preferir a subtração, aumenta o 5% de todos os lançamentos em uma média de pontos 7 (duas vezes o lançamento médio do d6). Com certeza, definir o número de destino como 0 ou 11 faz com que a regra de desempate não seja importante.

Claro, se realmente não faz diferença em sua mecânica real se o jogador rola N pontos abaixo ou N acima do objetivo, você realmente deseja plotar seus resultados de maneira a agrupá-los. Uma possibilidade seria, na verdade, traçar a distância da jogada do jogador até o alvo, assim:

saída [10 absoluto - [melhor do 1d10 mais menos 1d6]]

Essa mudança torna a saída muito mais legível (IMO, pelo menos):

Screenshot

Ele também destaca a simetria deste exemplo mecânico: é igualmente fácil apontar para o 1, assim como para o 10 com um rolo de 1d10 ± 1d6 e, portanto, os gráficos desses dois valores de destino se sobrepõem exatamente no gráfico acima.

02.03.2017 / 14:48

A fórmula que alcançará o que eu acho que é o resultado desejado:

output 1d10 + d{-6,-5,-4,-3,-2,-1,1,2,3,4,5,6}

Isso mostra o intervalo de chances de qualquer valor -6 a + 6 adicionado a um teste do d10.

Com base no feedback recebido de Michael nos comentários, eu também adiciono isso aqui para tornar minha resposta mais completa:

Um script anydice que possui duas saídas:

saída 1d10 + 1d6 saída 1d10 - 1d6

Individualmente, eles fornecerão as chances de qualquer valor chegar a esse resultado específico. Quando os dados são transpostos, no entanto, eles serão transpostos pelos resultados, e não pelas saídas, o que mostrará as probabilidades relativas de cada resultado para cada saída.

27.02.2017 / 20:28