4 votes

Pools de d6 opposés, nombre de dés supérieurs

J'ai lu des dizaines de posts ici, et j'ai lutté avec le code suggéré par AnyDice, mais rien ne correspond tout à fait à ce que je recherche. Je pense que le concept est simple : pour des pools de dés opposés de 1..6d6, je veux calculer la probabilité des dés les plus élevés.

Dans mon cas, le nombre de dés plus élevés comprend un dé avec une face plus élevée que la plus élevée de l'adversaire, et/ou un nombre plus élevé de la face la plus élevée de l'adversaire. A = 1234, B = 456 : B obtient 2 (5 et 6 > 4) A = 1233, B = 1223 : A gagne 1 (2 3 contre 1 3) Je veux analyser la probabilité de chaque 3 des dés supérieurs pour 2d6 contre 2..6d6. Toute aide serait appréciée.

Le plus proche que j'ai trouvé est https://anydice.com/program/1f78d mais cela m'indique simplement la probabilité relative de X # de dés de la même face.

Merci,

  • Jean

5voto

trjh Points 11

Voici une solution assez courte et rapide :

function: A:s vs B:s {
  if 1@A = 1@B { result: (A = 1@A) - (B = 1@B) }
  else { result: (A > 1@B) - (B > 1@A) }
}

loop N over {2..7} {
  output [Nd6 vs 2d6] named "[N]d6 vs 2d6" 
}

Il utilise les fonctions suivantes d'AnyDice :

  1. Le passage d'un jet de dés à une fonction attendant une séquence (c'est-à-dire un paramètre étiqueté avec la mention :s ) "gèle" le jet : AnyDice appellera automatiquement la fonction pour chaque résultat possible du lancer et comptabilisera les résultats.
  2. Lorsqu'il énumère les résultats possibles d'un lancer de dés, AnyDice trie toujours les nombres obtenus du plus élevé au plus bas. Ainsi, 1@ renvoie le résultat le plus élevé de chaque groupe.
  3. Lorsqu'une séquence est comparée à un nombre, AnyDice compare chaque élément de la séquence au nombre et compte le nombre de vraies comparaisons.

Nous avons donc deux cas de figure :

  • Si les jets les plus élevés de chaque groupe sont identiques (c'est-à-dire si 1@A = 1@B ), nous comptons le nombre de fois où le résultat le plus élevé se produit dans le pool A (avec A = 1@A ), en soustraire le nombre de fois qu'il apparaît dans le pool B (c'est-à-dire B = 1@B ) et renvoie la différence.
  • Sinon, nous comptons le nombre de jets dans la réserve A qui dépassent le jet le plus élevé dans la réserve B (avec A > 1@B ) et d'en soustraire le nombre de jets de la réserve B qui dépassent le jet le plus élevé de la réserve A (c'est-à-dire B > 1@A ). (Bien entendu, un seul de ces deux comptes peut être différent de zéro).

3voto

Someone_Evil Points 42173

Si vous voulez faire de l'introspection sur un jeu de dés, vous avez besoin des fonctions suivantes

Une chose que nous pouvons faire dans Anydice est de lancer des dés dans une séquence. La séquence peut être traitée comme un groupe de dés lancés et la fonction sera analysée sur tous les lancers possibles, ce qui nous donnera nos probabilités.

Notre méthode devient alors assez simple. Pour notre groupe d'adversaires (B), nous ne nous intéressons qu'au plus élevé et comme un groupe de dés lancé comme une séquence sera trié par ordre décroissant, nous pouvons simplement prendre le premier ; 1@B . Nous comptons ensuite toutes les valeurs de dés supérieures à 1@B en A. Si ce nombre est égal à 0 (c'est-à-dire qu'aucun de nos dés n'est plus fort que celui de l'adversaire), nous comptons le nombre qui est égal à 1@B et le renvoie à la place.

Vous pouvez voir cette mise en œuvre dans le document suivant Programme Anydice

D: 6

function: number higher in A:s over B:s 
{
   C: [count {1@B+1..D} in A]
   if C = 0 { C: [count 1@B in A] }
   result: C
}

loop N over {2..6} {
   output [number higher in 2dD over NdD] named "[N]d[D] higher dice v 2d[D]" 
}

2voto

DeChinees Points 1

J'ai obtenu le résultat suivant, en tenant compte du nombre de dés lorsque la face la plus haute est une égalité. Je pense que ça marche, la distribution est homogène pour les nombres pairs, ce qui favorise l'avantage d'avoir un plus grand nombre de dés sans pour autant le rendre instantanément OP.

\ Dice pool higher dice, ties on highest face use higher count \
\ D is the size of the dice \
\ Successes are scored on all dice higher than opposing highest, or on the higher # of dice for ties on the highest face \

D: 6

function: number higher in A:s over B:s 
{
   if 1@A != 1@B { result: [count {1@B+1..D} in A] - [count {1@A+1..D} in B] } \ Diff of higher As = higher Bs \
   result: [count {1@B} in A] - [count {1@A} in B] \ Diff the _count_ of highest \
}

loop N over {2..7} {
   output [number higher in NdD over 2dD] named "[N]d[D] higher dice v 
2d[D], ties count" 
}

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