5 votes

Comment puis-je calculer la différence entre deux lancers dans AnyDice?

Comment calculer le suivant dans AnyDice?

2d6, soustrayez le plus petit résultat du plus élevé.

13voto

Blckknght Points 6882

Je suggère de soustraire sans se soucier du dé le plus élevé, puis de prendre la valeur absolue :

output [d6 absolu - d6]

7voto

Nir Points 536

Vous pouvez utiliser le code anydice suivant pour cela:

function: X:n odiff Y:n  {
if X > Y {
   result: X-Y
  }
else {
   result: Y-X
   }
}
output [d6 odiff d6] named "différence entre 2d6"

Cela vérifie quel dé est le plus élevé puis soustrait en conséquence, fournissant ces résultats:

graphique des résultats

Notez qu'après avoir fait cela et l'avoir comparé à la réponse de Blckknght, les résultats sont les mêmes mais l'autre réponse a un code plus simple alors je vais juste laisser ceci ici comme un exercice d'apprentissage.

4voto

trjh Points 11

La méthode générale pour le faire dans AnyDice est d'écrire une fonction qui prend une séquence comme paramètre, et de passer le jet de dés dans la fonction, par exemple comme ceci:

function: highest minus lowest of ROLL:s {
  result: 1@ROLL - #ROLL@ROLL
}

output [highest minus lowest of 2d6]
output [highest minus lowest of 3d6]

L'élément clé ici est le :s après le nom du paramètre. C'est ce qui dit à AnyDice que le paramètre ROLL devrait être une séquence de nombres, plutôt qu'un seul nombre ou un (pool de) dé(s).

Ce que fait réellement AnyDice, lorsque vous passez un pool de dés dans une fonction attendan une séquence comme ceci, c'est qu'il exécute la fonction pour chaque lancer de dés possible, assignant les nombres roulés à la séquence (triée de la plus haute à la plus basse par défaut). Il collecte ensuite les résultats renvoyés par la fonction dans un seul dé biaisé, dont les résultats possibles sont pondérés selon la probabilité d'obtenir chacun de ces résultats avec le lancer de dés.

Ainsi, à l'intérieur de la fonction, les dés sont effectivement "gelés" en une séquence de nombres fixés, et vous pouvez faire n'importe quelle opération mathématique ou autre manipulation sur ces nombres que vous voulez.


C'est en fait une astuce générale pour faire des calculs arbitraires sur les résultats d'un jet de dés dans AnyDice. Bien que très utile, cela présente deux inconvénients notables:

  1. Cela peut être lent pour un grand nombre de dés (et/ou un grand nombre de faces par dé), car il appelle la fonction pour chaque résultat possible du lancer. En particulier, si vous essayez de calculer quelque chose comme [highest minus lowest of 100d6], il y a de fortes chances que cela dépasse le délai, car AnyDice n'est pas assez intelligent pour se rendre compte que seul le chiffre le plus haut et le chiffre le plus bas comptent, et essaiera à la place d'itérer en force brute sur toutes les séquences possibles de nombres que l'on pourrait lancer avec 100d6 (dont il y en a un peu plus de 79 millions).

  2. Étant donné qu'AnyDice collecte les résultats de la fonction dans un dé biaisé, et qu'il ne supporte pas les dés de type séquence, vous ne pouvez pas utilement retourner une séquence à partir d'une fonction appelée de cette manière. Si vous essayez, elle est simplement additionnée en un seul nombre. (Vous pouvez, cependant, retourner un dé à partir d'une telle fonction, et il se comportera exactement comme vous vous y attendriez.)

AlleGamers.com

AlleGamers est une communauté de gamers qui cherche à élargir la connaissance des jeux vidéo.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X