Supposons que vous vouliez calculer le résultat le plus élevé d'un seul dé dans le pool de dés mélangés, voici une solution simple :
function: max A:n B:n C:n {
result: 1@[sort {A, B, C}]
}
output [max 1@3d4 1@2d6 1@1d8]
Ce code est également facilement extensible ; par exemple, Voici le même code avec quelques d12 et un d20. :
function: max A:n B:n C:n D:n E:n {
result: 1@[sort {A, B, C, D, E}]
}
output [max 1@5d4 1@4d6 1@3d8 1@2d12 1@1d20]
(Notez comment les résultats 13-20 ont tous une probabilité de 1/20 = 5% dans cet exemple : chaque fois que vous obtenez un résultat supérieur à 12 sur le seul d20, ce sera le résultat le plus élevé, indépendamment de ce qui se passe avec les autres dés. Pour la même raison, la probabilité que le résultat le plus élevé soit 7 ou 8 est toujours 1/8 = 12,5 % dans le premier exemple).
La raison pour laquelle ce code fonctionne est la règle suivante : "Si un dé est fourni [à une fonction qui attend un nombre], alors la fonction sera invoquée pour tous les nombres sur le dé - ou les sommes d'une collection de dés - et le résultat sera un nouveau dé". La notation intégrée 1@DIE
renvoie un dé (unique, biaisé) représentant la distribution du plus haut jet dans le dé original ; la méthode personnalisée [max NUMBER NUMBER NUMBER]
qui se contente de calculer le maximum de trois nombres, est ensuite appelé pour chaque combinaison possible de rouleaux maximums, et les résultats sont pondérés par la probabilité des combinaisons. C'est une sorte de méthode de force brute, mais elle fonctionne.
Ps. Si vous écrivez [max 3d4 2d6 1d8]
au lieu de [max 1@3d4 1@2d6 1@1d8]
vous obtenez quelque chose de très différent - à savoir, le maximum somme de chaque type de dé. En gros, les 1@
fait en sorte que le maximum de chacun des trois rouleaux soit transmis à max
alors qu'en l'omettant, c'est la somme de chaque jet qui est passée à la place. Bien sûr, si vous n'avez qu'un seul de chaque type de dé, cela ne fait aucune différence.
De plus, pour la même raison, la méthode décrite ci-dessus ne peut pas être facilement adaptée pour donner l'équation deuxième le plus grand nombre dans une réserve de dés irrégulière. Pour y parvenir, vous devrez plutôt transmettre chaque sous-pool à la fonction sous forme de séquence, comme décrit ici y aquí .
0 votes
Pour "le plus haut de 3d4, 2d6 et 1d8", si vous lancez (4, 4, 4), (5, 5) et (7), voulez-vous un résultat de 7 (= le plus haut dé individuel) ou de 12 (= la plus haute somme de chaque type de dé) ? Ou, en d'autres termes, y a-t-il une différence entre "le plus élevé de 1d6, 2d6 et 3d6" et "le plus élevé de 6d6" ?