22 votes

Lancez Xd6, en gardant la valeur la plus élevée et en ajoutant +1 pour chaque duplicata de cette valeur ?

Je suis en train de créer un jeu de cartes et de dés et j'essaie de mettre en place quelque chose sur Anydice pour comparer les chances des jets de dés, mais j'ai du mal à me faire une idée du langage utilisé par Anydice.

De quoi aurais-je besoin pour lancer un jeu de dés, conserver la valeur la plus élevée et ajouter +1 pour chaque copie de ce dé ?

Par exemple, si je lance [3, 5, 5], j'obtiendrai un résultat de 6 (5 + 1), et [2, 2, 5, 5, 5] un résultat de 7 (5 + 1 + 1).

Je ne me soucie pas de savoir si le résultat final est plus élevé avec des dés de moindre valeur (par exemple, un lancer de [5, 5, 5, 6] pourrait donner un résultat de 7, mais devrait donner un résultat final de 6), mais c'est surtout pour des raisons de simplicité, car les chances de lancer suffisamment de doubles de moindre valeur pour surpasser un lancer de valeur supérieure sont suffisamment faibles pour être ignorées.

Ce site est la question de BG.SE d'où viennent les exigences du système de dés à l'origine (et pourquoi c'est pertinent).

44voto

Someone_Evil Points 42173

Il y a quelques petites astuces que nous pouvons utiliser ici. Tout d'abord, nous voulons examiner les valeurs individuelles d'un rouleau, nous devons donc transformer le rouleau en une séquence. Pour ce faire, nous ajoutons :s au nom du paramètre dans la déclaration de la fonction.

Nous utilisons ensuite le fait qu'une telle séquence sera (par défaut) triée de manière descendante, de sorte que nous pouvons obtenir la valeur la plus élevée en tant que 1@DICE . La troisième astuce consiste à reconnaître que le nombre de doublons est inférieur d'une unité au nombre de cette valeur, pour laquelle il existe une fonction intégrée [count value in sequence] . En assemblant tout cela, on obtient :

function: roll DICE:s add dupecount to highest {
   result: 1@DICE + ([count 1@DICE in DICE] - 1)
}

Vous pouvez utiliser la fonction comme ceci :

output [roll 3d6 add dupecount to highest]

Ce qui produit :

enter image description here

Nous pouvons alors vérifier notre résultat. Notre valeur la plus élevée est 8 à partir de l'obtention de [6, 6, 6] et nous verrons que cela a une probabilité de 1 sur 216 (à partir de 6 \$^3\$ ). Le minimum de 2 provient de [2, 1, 1] et les deux autres permutations de ce résultat ont une probabilité de 3/216. (Je partage surtout cela pour montrer une façon simple de vérifier le résultat, le calcul manuel des résultats extrêmes est généralement beaucoup plus facile).

14voto

Eddymage Points 10140

A côté de Someone_Evil's excellente réponse Je voudrais ajouter une contribution mathématique, afin de généraliser la règle ci-dessus pour un grand nombre d'éléments. \$X\$ et pour des dés différents.

D'une part, on observe que le score \$v\$ sous les règles ci-dessus est donné par \begin {équation} v = h+s-1 \end {équation} où \$h\$ est le résultat le plus élevé parmi les dés et \$s\$ est le nombre de réalisations d'un tel rouleau. Considérons par exemple \$v=3\$ dans le cadre d'un lancer de 3d6 : les résultats qui fournissent un tel résultat sont

  • (1,1,1)
  • (2,2,1), (1,2,2), (2,1,2)
  • (3,1,1), (1,3,1), (1,1,3), (3,2,1), (3,1,2), (2,3,1), (1,3,2), (2,1,3), (1,2,3), (3,2,2), (2,3,2), (2,2,3)

Observez que la dernière peut être résumée en seulement 3 cas (3, \$x\$ , \$y\$ ), ( \$x\$ ,3, \$y\$ ), ( \$x\$ , \$y\$ ,3), où \$x<3\$ y \$y<3\$ .

D'où :

  • \$h=1\$ , \$s=3\$ \$ \to\ $ \$v=1+3-1=3\$
  • \$h=2\$ , \$s=2\$ \$ \to\ $ \$v=2+2-1=3\$
  • \$h=3\$ , \$s=1\$ \$ \to\ $ \$v=3+1-1=3\$

Évidemment, lorsque le plus haut résultat est 4 ou plus, on ne peut pas obtenir un score de 3. Calculez maintenant les probabilités des réalisations ci-dessus, où \P(v|h=k)\$. signifie la probabilité d'avoir un score de \$v\$ lorsque le résultat le plus élevé des rouleaux est \$k\$ :

  • \$h=1\$ : \$P(3|h=1)=P( \mbox {get all 1s})=(1/6)^3\$

  • \$h=2\$ : $ \begin {eqnarray} P(3|h=2)&=&P( \mbox {obtient exactement 2 2s}) \cdot P( \mbox {obtenir 1 rouleau inférieur à 2}) \cdot ( \mbox {nombre de réalisations équivalentes}) \\ &=& \left ( \frac16\right )^2 \cdot F(1)^1 \cdot 3 = \left ( \frac16\right )^33 \end {eqnarray}$$$ où \$F(x)\$ es el fonction de distribution cumulative : \$F(x)\$ donne la probabilité d'obtenir un résultat inférieur ou égal à \$x\$ donc si nous voulons calculer la probabilité d'obtenir un nombre strictement inférieur à 2, nous devons calculer \$F(1)\$ .

  • \$h=3\$ : $ \begin {eqnarray} P(3|h=3)&=&P( \mbox {obtient exactement un 3}) \cdot P( \mbox {obtenir 2 rouleaux inférieurs à 3}) \cdot ( \mbox {nombre de réalisations équivalentes}) \\ &=& \left ( \frac16\right )^1 \cdot F(2)^2 \cdot 3 = \left ( \frac16\right ) \left ( \frac13\right )^23 \end {eqnarray}$$$

  • \$h \geq 4\$ : \$P(3|h \geq4 )=0\$

La probabilité d'obtenir un score de 3 est alors de $$ P(3) = \sum_ {i=1}^6P(3|h=i) $$

Nous sommes maintenant en mesure de généraliser le schéma ci-dessus : soit \$f(x)\$ être le probabilité d'obtenir \$x\$ avec un rouleau, \$F(x)\$ la fonction de distribution cumulative et \$ \begin {pmatrix}n \\k\end {pmatrix}\$ el coefficient binomial qui donne toutes les façons de ramasser \$k\$ les objets parmi \$n\$ sans tenir compte de l'ordre. Considérons un dé avec \$D\$ visages : la probabilité de marquer des points \$v\$ avec un rouleau XdD est donné par $$ P(v) = \sum_ {i=1}^D P(v|h=i) = \sum_ {i=1}^D \begin {pmatrix}X \\s_i\end {pmatrix}f(i)^{s_i} F(i-1)^{(X-s_i)} $$ où \$s_i\$ est le nombre de réussites nécessaires lorsque le plus haut jet est \$i\$ y \$F(0)=0\$ . Le terme \$f(i)^{s_i}\$ est la probabilité d'obtenir exactement \$s_i\$ succès, \$F(i)^{X-s_i}\$ est la probabilité que les rouleaux restants soient inférieurs à \$i\$ . Enfin, le coefficient binomial prend en compte les séquences équivalentes.

A titre d'exemple, considérons le cas d'un jet de 5d4 :

  • P(2) = 0.49%
  • P(3) = 8.79%
  • P(4) = 48.34%
  • P(5) = 30.86%
  • P(6) = 9.86%
  • P(7) = 1.56%
  • P(8) = 0.10%

La figure ci-dessous, au contraire, décrit la distribution lorsque le nombre de d6 lancés varie entre 3 et 60 : plus il est jaune, plus la probabilité est élevée. Le calcul a été effectué en Python.

Intensity Plot

À titre de curiosité, lorsque le nombre de dés lancés augmente, la distribution ressemble à une distribution gaussienne (avec \$r^2\$ proche de 0,99), comme il ressort de la figure ci-dessous (crédits à Kieran Mullen pour avoir fait remarquer qu'un tracé en 3D pourrait être plus clair). En effet, comme Someone_Evil l'a fait remarquer dans les commentaires, pour les grands modèles de \$N\$ (environ 30-35), la probabilité d'obtenir au moins un 6 est proche de 1 : par conséquent, la distribution ci-dessus est tout simplement un Binomiale un. De plus, comme \$N\$ s'approche de l'infini (dans la vie réelle, cela signifie qu'il est grand, dans ce cas environ 30) la distribution binomiale est approximation de par un gaussien.

3d Plot of the probability distribution

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