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:
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:
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:
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):
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.