12 votes

Comment puis-je utiliser AnyDice pour simuler le lancement de 6d6, et en laissant tomber les 2 dés les plus bas et le 1 dé le plus élevé?

Je vais bientôt lancer une nouvelle campagne de D&D 5e et j'aimerais essayer de lancer des statistiques avec quelques garde-fous. En faisant quelques essais à table, j'ai aimé l'aspect de lancer 6d6, puis de retirer les deux lancers les plus élevés et les deux lancers les plus bas. Il semble que cela générerait une médiane similaire à 4d6 (les 3 plus élevés), mais avec une distribution plus serrée. Cependant, je n'ai pas réussi à modéliser cela dans AnyDice.

Ce serait vraiment facile à faire avec la fonction "middle" si vous pouviez simplement obtenir qu'elle arrondisse les positions des dés vers le haut au lieu du bas, cependant je suis intéressé par toute solution.

12voto

Paul Stone Points 1506

{2..4}@6d6

"... Enseigne à un homme à pêcher, ..."

Dans la documentation, à la section Introspection, l'opérateur @ est décrit comme l'opérateur "d'accès" :

vous pouvez récupérer les nombres individuels stockés à l'intérieur d'une valeur. Vous pouvez soit fournir la position d'une seule valeur à récupérer, soit une séquence de positions, auquel cas les valeurs récupérées sont additionnées.

6d6 est une "collection de dés", et dans cette sous-section, il est dit :

Lors de l'accès à une collection de dés, les dés seront ordonnés de la plus grande valeur à la plus petite valeur. Ainsi, 1@3d6 sélectionnera la valeur de dé la plus élevée, tandis que 3@3d6 sélectionnera la valeur de dé la plus basse. {1,2}@3d6 additionnera les deux dés les plus élevés des valeurs jetées, en abandonnant la valeur de dé la plus basse.

Cela signifie que pour obtenir ce que vous avez décrit, vous pouvez écrire {2,3,4}@6d6, ce qui signifie : "abandonner le résultat le plus élevé, additionner les 2ème, 3ème et 4ème valeurs les plus élevées et abandonner le reste."

Cependant...

... en faisant cela et en le comparant avec {1,2,3}@4d6 (4d6 abandon du plus bas), vous constaterez que le résultat moyen est nettement inférieur, tout en étant légèrement plus serré :

description de l'image ici

6 votes

Ceci est en fait une meilleure réponse que la mienne, car elle traduit directement le comportement de défilement souhaité en code, plutôt que de se fier au comportement de troncation semi-arbitraire de la fonction middle pour produire le résultat souhaité.

0 votes

@RyanThompson, beaucoup de respect pour être prêt à reconnaître une meilleure réponse.

5voto

Juliet Points 40758

La fonction middle fait déjà ce que vous voulez

En testant, il semble que les dés sont triés par ordre décroissant lors de la sélection du milieu. Cela signifie que [middle 3 of 6d6] devrait être exactement ce que vous voulez : le 2ème, 3ème et 4ème dé après avoir trié les 6 dés du plus haut au plus bas, en laissant tomber le 1er dé (le plus haut) ainsi que les 5ème et 6ème dés (les deux plus bas).

Pour vous convaincre que la fonction middle fonctionne ainsi, essayez [middle 1 of 2d6]. Vous verrez que la distribution résultante est biaisée en faveur des valeurs plus grandes, ce qui signifie qu'elle sélectionne le plus grand des deux lancers.

Quoi qu'il en soit, au cas où vous voudriez un middle alternatif qui arrondit les positions des dés vers le haut plutôt que vers le bas, nous pouvons facilement le faire en modifiant la fonction middle standard, qui ressemble à cela :

function: middle NUMBER:n of DICE:d {
 if NUMBER = #DICE { result: DICE }

 if NUMBER = 1 { result: (1 + (#DICE - 1) / 2) @ DICE }

 FROM: 1 + (#DICE - NUMBER) / 2
 TO: FROM + NUMBER - 1
 result: {FROM..TO}@DICE
}

Tout ce que nous avons à faire est d'ajouter un 1 supplémentaire à chaque endroit où un nombre est divisé par 2, pour changer l'arrondi vers le bas en arrondi vers le haut :

function: altmiddle NUMBER:n of DICE:d {
 if NUMBER = #DICE { result: DICE }

 if NUMBER = 1 { result: (1 + (#DICE) / 2) @ DICE }

 FROM: 1 + (#DICE - NUMBER + 1) / 2
 TO: FROM + NUMBER - 1
 result: {FROM..TO}@DICE
}

Avec ces fonctions définies, nous pouvons exécuter ce qui suit :

output [middle 3 of 6d6] named "Milieu, positions arrondies vers le bas"
output [altmiddle 3 of 6d6] named "Milieu, positions arrondies vers le haut"

Vous remarquerez que celui qui utilise middle a une moyenne plus élevée, ce qui signifie qu'il abandonne plus de dés bas que de dés hauts.

0 votes

Je peux confirmer que les dés sont en ordre croissant : c'est dans la section Introspection de la documentation.

0 votes

Merci beaucoup. J'ai lu la définition de middle et j'ai supposé juste ascending, donc je n'ai même pas essayé! Cependant, j'apprécie la réponse COMPLÈTE de toute façon au cas où je ferais d'autres ajustements.

0 votes

@DaleM Vous voulez dire l'ordre décroissant, n'est-ce pas? (c.-à-d. le plus élevé en premier)

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