O solução geral para rolar novamente uma vez é usar uma função auxiliar como esta:
function: ROLL: n reroll BAD: s como REROLL: d {se ROLL = BAD {resultado: REROLL} resultado: ROLO}
Você pode atribuir o resultado dessa função a um dado personalizado e, em seguida, role quantos deles desejar:
X: [d6 reroll {1,2} como d6] saída [mais alto 3 de 4dX]
Para relançar um número ilimitado de vezes, podemos usar um truque de esta resposta por Carcer e passar o "dado vazio" d {}
como o REROLL
parâmetro, como isso:
Y: [d6 reroll {1,2} como d {}] produz [o mais alto 3 de 4dY]
Ao resumir os resultados da função, o AnyDice simplesmente ignora esses dados vazios, como se as jogadas que os resultaram nunca tivessem acontecido.
No entanto, para dados simples como um único d6, também é possível definir diretamente um dado personalizado que exclui as faces a serem rolar novamente, conforme descrito em Alex P's e Dale M's respostas:
saída [o mais alto 3 de 4d {3..6}]
O truque geral de re-rolagem é mais útil nos casos em que a "matriz" de entrada a ser re-rolada já é o resultado de algum procedimento complexo de rolagem, de modo que as probabilidades de rolagens diferentes não são as mesmas (como em um d6 simples).
Por exemplo, se você deseja calcular, digamos, a distribuição das pontuações de habilidade obtidas rolando 4d6, eliminando o dado mais baixo e depois rolar novamente a pontuação inteira até que seja pelo menos 10, você poderia usar esse código:
output [[o mais alto 3 de 4d6] rolar novamente {3..9} como d {}]