Uma geração exaustiva das possibilidades pode ser feita.
Não é 100% claro o que você quer dizer com "dados totalizando pelo menos 5", eu escolhi interpretar isso como "soma até 5 dados" e isso significa que um teria pelo menos um sucesso com um pool de 5 ou mais dados (e pelo menos 2 sucessos com um conjunto de 10 dados).
Em princípio, o algoritmo é simples:
# interpret "roll a die" as "loop from 1 to 6 and for each..."
declare a tabulation function
declare a "generate all rolls" function, taking dice to roll and rolls so far
if we should roll only one more dice:
roll it, add it to the rolls so far, pass that to the tabulator
otherwise:
roll a die, add it to the rolls so far and call ourselves, generating one less roll
Depois, você pode tabular todo o número de sucessos diferentes. Até agora, tenho os resultados para pools de tamanho 2-9 e posso editar a entrada com os resultados.