7 votes

Méthode générale pour afficher d{d1,d2,d3...dn} dans AnyDice

Je cherche à trouver une méthode plus générale pour créer certaines distributions unilatérales en utilisant anydice.com, de sorte que les valeurs inférieures ou égales à 0 s'affichent comme 0 et le reste s'affiche normalement, d'un jet de dés 2dy-8.

Par exemple, pour un 2d6-8, je vais entrer ce qui suit :

output (2d6-8>0)*d{d1,d2,d3,d4},

alors que pour 2d7-8, j'entrerai ce qui suit :

output (2d7-8>0)*d{d1,d2,d3,d4,d5,d6}.

Ces lignes me donnent exactement ce que je veux, mais pour des valeurs plus élevées de y (comme 2d12, par exemple), cela devient de plus en plus fastidieux, je me demande donc s'il existe un moyen plus général (compact) d'écrire cela. De plus, je ne veux pas avoir à créer une fonction personnalisée, mais plutôt utiliser uniquement le langage général en une seule ligne "output xxx" qu'anydice utilise.

Toute aide ou suggestion est grandement appréciée.

1 votes

Salut Russ, bienvenue sur rpg.se! Faites le tour et visitez le centre d'aide pour plus d'informations.

12voto

Gambrinus Points 1738

Vous voulez utiliser la fonction highest of NUMBER and NUMBER dans AnyDice à la place, pour ne pas avoir à spécifier manuellement le résultat en fonction de vos connaissances préalables sur la façon dont ce jet devrait se comporter.

output [highest of 2d6-8 and 0]
output [highest of 2d7-8 and 0]
output [highest of 2d12-8 and 0]

Chacun de ceux-ci traitera tous les résultats négatifs du jet 2dX-Y comme étant égaux à 0 à la place.

2voto

trjh Points 11

En général, si AnyDice n'avait pas déjà une fonction appropriée (comme mentionné dans la réponse de Xirema), la réponse serait de créer une fonction personnalisée. Comme ceci, par exemple:

function: ROLL:n mais pas moins que zéro {
  if ROLL < 0 {
    result: 0
  } else {
    result: ROLL
  }
}

output [2d12 - 8 mais pas moins que zéro]

La raison pour laquelle vous avez besoin d'une fonction (personnalisée ou intégrée) est que si vous essayez d'utiliser un lancer de dé dans une instruction if en dehors d'une fonction, AnyDice refusera d'exécuter le code et affichera un message d'erreur à la place :

erreur de calcul

Les valeurs booléennes ne peuvent être que des nombres, mais vous avez fourni "d{?}".
Selon ce que vous voulez, vous devrez peut-être créer une fonction.

Cependant, si vous passez ce même lancer de dé à une fonction qui s'attend à un nombre (c'est-à-dire a :n après le nom du paramètre), alors AnyDice appellera automatiquement la fonction pour chaque valeur possible du lancer et rassemblera les résultats dans un dé personnalisé. À l'intérieur de la fonction, le paramètre (par exemple ROLL ci-dessus) sera un nombre fixe, et donc les expressions le concernant (comme ROLL < 0) auront une valeur fixe définitive qui peut être utilisée en toute sécurité dans une instruction if.

(Si vous souhaitez examiner les dés individuels dans un pool lancé de deux ou plus, vous pouvez également faire en sorte que la fonction attende une séquence en remplaçant le :n par :s. Dans ce cas particulier, cela ne ferait aucune différence, cependant, car les opérations mathématiques comme - 8 appliquées à un pool de dés dans AnyDice additionneront automatiquement tous les dés avant de faire le calcul. Donc il n'y a aucun moyen d'extraire les dés individuels d12 de 2d12 - 8.)

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