5 votes

Comment représenter un système de pool D6 où un 5 est un demi-succès et un 6 un plein succès en utilisant Anydice ?

Je suis en train de créer un système personnalisé YZE utilisant uniquement des D6, où il y a la possibilité d'obtenir un "demi-succès" lorsque vous obtenez un 5. Cela signifie que vous devez obtenir deux 5 pour obtenir un succès.

En même temps, la règle selon laquelle les 6 sont un succès reste la même.

Obtenir seulement un demi-succès est significatif car c'est un "succès avec une conséquence".

Mais obtenir 1,5, 2,5, etc. n'est pas important ; il suffit d'arrondir à 1, 2, etc.

Je n'ai pas encore compris ce que signifie pousser les rouleaux.

Comment représenteriez-vous cela dans Anydice ?

10voto

trjh Points 11

Si je vous comprends bien, quelque chose comme ceci devrait le faire :

loop N over {1..10} {
  output Nd{0:4, 1, 2} / 2 named "[N]d6, 6=success, 5=half success, round down"
}

Vous ne pouvez pas représenter directement des valeurs non entières dans AnyDice. Mais ce que vous peut est de compter le nombre de demi-succès dans votre rouleau (c'est-à-dire un pour chaque 5, deux pour chaque 6) et divisez ensuite par deux.

La division dans AnyDice arrondit à l'inférieur ( en fait vers zéro ), ce qui semble être ce que vous voulez ici sur la base de vos exemples, il n'y a donc pas besoin d'ajuster cela. Si vous vouliez arrondir à la hausse, vous pourriez ajouter un avant de diviser par deux (ou, plus généralement, ajouter \$n-1\$ avant de diviser par \$n\$ ).


Le code ci-dessus fait no différencier un demi-succès (que vous avez mentionné vouloir traiter comme un "succès avec complications") d'aucun succès du tout. La façon la plus simple d'obtenir la probabilité que cela se produise est peut-être de simplement le calculer séparément :

loop N over {1..10} {
  output Nd{0:4, 1, 2} = 1 named "[N]d6, one five, no sixes"
}

Le résultat sera 1 si le nombre de demi-succès obtenus est exactement 1, et 0 sinon. Ce type de " boolean "Le résultat est plus facilement visualisable dans la vue sommaire d'AnyDice (vers laquelle le lien ci-dessus vous conduit), où le graphique "moyen" montre directement les probabilités de lancer un seul demi-succès. Vous pouvez soustraire ces probabilités de demi-succès des probabilités de succès nulles données par le premier script ci-dessus pour obtenir les probabilités réelles de lancer des dés. même pas la moitié d'un succès . (Ou changez simplement le = 1 dans le code ci-dessus pour = 0 pour les sortir directement).


Si vous voulez obtenir à la fois la distribution du nombre de succès complets et la probabilité d'obtenir un seul demi-succès à partir d'un seul script AnyDice, vous allez devoir faire un peu plus de travail - dans ce cas, comme d'habitude, en écrivant une fonction d'aide pour faire correspondre le nombre de demi-succès à la sortie finale.

Mais d'abord, vous devez décider comment pour représenter les différents résultats possibles dans la sortie. Une option assez raisonnable serait d'utiliser -1 pour représenter "même pas la moitié d'un succès", 0 pour représenter "seulement la moitié d'un succès" et des entiers positifs pour représenter un ou plusieurs succès complets (c'est-à-dire 1 = un succès, 2 = deux succès, etc.). En utilisant cette représentation, nous pouvons écrire notre fonction d'aide comme ceci :

function: count HALF_SUCCESSES:n {
  if HALF_SUCCESSES = 0 { result: -1 }  \ not even half a success \
  if HALF_SUCCESSES = 1 { result:  0 }  \ "success with complications" \
  result: HALF_SUCCESSES / 2  \ otherwise just count whole successes \
}

loop N over {1..10} {
  output [count Nd{0:4, 1, 2}] named "[N]d6, -1 = fail, 0 = complications, 1+ = success"
}

L'inconvénient (mineur) de ce schéma d'encodage est que les valeurs de moyenne et d'écart-type calculées automatiquement par AnyDice deviennent plutôt insignifiantes (alors que pour le premier script ci-dessus, elles vous donnent directement le nombre moyen de succès complets et son écart-type) puisque les nombres de sortie ne sont plus linéairement proportionnels au nombre total de succès. Mais vous pouvez toujours observer les graphiques pour voir comment la distribution change lorsque vous augmentez le nombre de dés.

0voto

Leon Radley Points 1314

Comme @Ilmari Karonen souligne Il faut donc faire quelques contorsions pour reformuler ce mécanisme en termes compréhensibles par AnyDice tout en étant utile aux êtres humains. En ce qui me concerne, il s'agit d'une (la ?) réponse correcte en réponse directe à la question posée, mais j'espère que cela apporte un éclairage supplémentaire et utile sur la modification.

En ce qui concerne la modélisation du mécanisme du moteur de l'Année Zéro ou de cette modification, les choses deviennent assez nuancées, en particulier - comme le suggère le PO - lorsqu'il s'agit de poussées, qui sont facultatives, fortement situationnelles et à la discrétion des joueurs. Mais nous pouvons au moins examiner le relatif la différence entre le mécanisme original et la modification dans des circonstances artificiellement contrôlées, ce qui peut donner une idée de l'intérêt de tester le jeu (ce qui est vraiment l'arbitre final pour savoir si le mécanisme est bon).

Parce que c'est difficile à faire avec AnyDice, j'ai essayé de faire des énumérations et des comparaisons en utilisant la fonction dyce ¹. Vous pouvez voir ma tentative complète et jouer avec dans votre navigateur : Try dyce [ source ]

legacy vs. w/ halves modification

Les graphiques d'éclatement dans la capture d'écran ci-jointe représentent le mécanisme modifié comme le beignet intérieur superposé au mécanisme hérité comme le beignet extérieur. Comme prévu, le nombre de succès anticipés est généralement plus élevé avec la modification, surtout lorsque la taille du pool augmente. De plus, la probabilité de bannissements lors d'une poussée diminue généralement.

Le code substantiel se trouve dans year_zero_and_a_half.py . Les graphiques sont générés à partir de ce cahier à l'aide de anydyce ². Le carnet de notes permet une certaine interaction (la taille du pool et la possibilité d'arrondir les demi-succès). Il affiche également des données brutes (non représentées ici), qui concordent avec les résultats de @Ilmari Karonen.

Tout cela étant dit, l'objectif de la conception n'est pas clair (du moins de mon point de vue d'ignorant). YZE a déjà un mécanisme (peut-être grossier) pour introduire des coûts qui accompagnent les tentatives de réussite via les banes. Si le mécanisme a pour but de répondre aux plaintes des joueurs qui trouvent que le mécanisme d'héritage est trop dur, on pourrait atténuer la difficulté en augmentant la taille du pool (par exemple, en augmentant les compétences, en augmentant ou en améliorant l'équipement, etc.) Encore une fois, les tests de jeu sont probablement la meilleure façon de vérifier tout ajustement.


¹ dyce est ma bibliothèque de probabilité de dés en Python.

² anydyce est ma couche de visualisation pour dyce conçu comme un substitut approximatif de AnyDice.

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