Na verdade, é muito simples implementar em AnyDice :
function: highest N:n of A:s and B:s {
result: {1..N} @ [sort {A, B}]
}
function: lowest N:n of A:s and B:s {
LEN: #A + #B
result: {LEN-N+1 .. LEN} @ [sort {A, B}]
}
Essas funções pressupõem que você não alterou a ordem de classificação, que é maior para o menor por padrão. Se você revertê-lo, a função "mais alta" começará a retornar os rolos mais baixos e vice-versa.
Você também pode modificar facilmente essas funções para lidar com mais de dois tipos de dados, como em:
function: highest N:n of A:s and B:s and C:s {
result: {1..N} @ [sort {A, B, C}]
}
function: lowest N:n of A:s and B:s and C:s {
LEN: #A + #B + #C
result: {LEN-N+1 .. LEN} @ [sort {A, B, C}]
}
Agora, para as más notícias: essas funções podem ficar muito lentas para grandes conjuntos de dados, porque eles enumeram todos os possíveis rolos por força bruta. O built-in "maior / menor N de DICE " funções são otimizadas usando matemática inteligente para executar muito rapidamente, mesmo para um grande número de dados, mas estes não são. Se você tentar calcular algo como [highest 2 of 10d6 and 10d8]
usando essas funções, você quase certamente receberá um erro de tempo limite.
Além disso, é importante notar que, assim como os built-ins, essas funções retornam um dado single que descreve a soma do maior / menor N valores. Assim, por exemplo, [highest 1 of [highest 2 of 1d6 and 1d8]]
não é o mesmo de [highest 1 of 1d6 and 1d8]
! Tanto quanto sei, na verdade combinando, e. um d6 e um d8 em um único conjunto de dados no AnyDice simplesmente não são possíveis; você pode ter dados tendenciosos representando qualquer distribuição de probabilidade que você queira, e você pode ter conjuntos de vários dados idênticos , mas você não pode ter diferentes tipos de dados no mesmo conjunto.
No lado positivo, diferentemente dos internos, essas funções funcionam "como esperado" também para entradas de sequência: por exemplo, [highest 2 of {1,2} and {3,4}]
retorna 7 = 3 + 4 conforme o esperado, não 10 = 1 + 2 + 3 + 4 como o correspondente [highest 2 of {1,2,3,4}]
embutido seria (!). (Isso acontece porque os built-ins são definidos para usar um dado como entrada, não uma sequência e, assim, AnyDice converterá automaticamente uma sequência em um dado somando seus valores antes que a função o veja. Eu meio que considero isso um bug no AnyDice, mesmo que seja tecnicamente funcionando exatamente como documentado.)