Ignorez l'ordre réel des choses, utilisez un ordre plus facile à calculer et n'ayez pas peur de faire des approximations.
Au lieu de lancer d'abord des stats et de relancer s'il n'y a pas deux 15+, nous pouvons obtenir exactement le même résultat en lançant d'abord deux stats qui doit être 15+ et ensuite lancer le reste "normalement".
Pour faire cela dans anydice, il faut prendre la collection des résultats possibles, ce que signifie 'le plus haut 3 sur 4d6', et enlever toutes les parties qui sont inférieures à 15.
La façon la plus simple de procéder est de le faire manuellement. En examinant les résultats de la distribution susmentionnée, nous constatons que '15' a 10,11 % de chances de se produire, '16' 7,25 %, '17' 4,17 % et '18' 1,62 %. Ces probabilités sont tronquées à la centième place, mais nous allons considérer ce niveau d'erreur comme acceptable. Une séquence comportant 1011 '15', 725 '16', 417 '17' et 162 '18' peut donc fonctionner comme un dé qui nous donne nos deux meilleures valeurs.
En utilisant la répétition, nous pouvons remplir une séquence en utilisant le code suivant :
output {15:1011,16:725,17:417,18:162}
Ensuite, nous devons corriger votre code. Il ne vous permet pas vraiment d'obtenir ce que vous cherchez, je pense, puisqu'il a une chance approximativement infinitésimale de produire des nombres inférieurs à 8. Cela peut vous convenir, mais nous pouvons également utiliser la troncature pour obtenir un système (à mon avis) beaucoup plus propre et à peu près aussi précis pour les 4 scores de capacité restants :
output {8:478,9:702,10:941,11:1142,12:1289,13:1327,14:1235,15:1011,16:725,17:417,18:162}
Vous pouvez faire quelque chose comme output [highest 1 of 6d {8:478,9:702,10:941,11:1142,12:1289,13:1327,14:1235,15:1011,16:725,17:417,18:162}]
pour confirmer qu'il donne les mêmes résultats.
Pour examiner chaque score de capacité, il suffit de tirer le nombre approprié d'une série de jets, en se rappelant que les jets supérieurs à 8 au lieu de 15 ne sont pas non plus meilleurs que le troisième jet le plus élevé d'une telle séquence. Nous nous retrouvons donc avec :
output [highest 1 of 2d{15:1011,16:725,17:417,18:162}] named "highest stat"
output 2 @ 2d{15:1011,16:725,17:417,18:162} named "2nd highest stat"
output 3@6d{8:478,9:702,10:941,11:1142,12:1289,13:1327,14:1235,15:1011,16:725,17:417,18:162} named "highest non-forced stat"
output 4@6d{8:478,9:702,10:941,11:1142,12:1289,13:1327,14:1235,15:1011,16:725,17:417,18:162} named "2nd highest non-forced stat"
output 5@6d{8:478,9:702,10:941,11:1142,12:1289,13:1327,14:1235,15:1011,16:725,17:417,18:162} named "2nd lowest stat"
output 6@6d{8:478,9:702,10:941,11:1142,12:1289,13:1327,14:1235,15:1011,16:725,17:417,18:162} named "lowest stat"
Ce qui donne résultats à moins d'un point de pourcentage de la valeur analytique 1 (erreur d'environ 10 %).
- grâce à @Carcer pour le programme de valeur analytique.
1 votes
Question : Si vous allez dans la vue roller, vous lancez 6 fois '4d6 drop lowest' pour chaque score de capacité, et ensuite vous faites ceci pour chacun des 6 scores de capacité, ce qui vous donne un total de 36 séries de '4d6 drop lowest'. Est-ce voulu ?
0 votes
@JRodge01 Cela ne semble pas garantir que vous vous retrouverez avec tous les scores de 8 et plus.
0 votes
Je ne suis pas sûr que le code fasse ce que le programmeur pense qu'il fait, même sans assurer les 8 et plus.
0 votes
@JRodge01 Je ne suis pas sûr de ce que vous voulez dire avec la vue en rouleau. C'est effectivement le cas, car 6 est la valeur par défaut du rouleau pour tout score d'aptitude, mais ce n'est pas pertinent pour la question. En ce qui concerne les 8 et plus, le code garantit qu'aucun résultat inférieur à 8 n'est obtenu. Les tableaux et les graphiques le confirment.
0 votes
Il fait quelque chose d'involontaire, c'est sûr. Regardez la distribution des 6 scores. Ils augmentent lentement quand vous passez de la capacité 1 à la capacité 2.
1 votes
Laissez-moi clarifier ma question. Vous définissez Y comme "six séries de 4d6, laissez tomber le plus bas, relancez de 3 à 7". Cela satisfait les étapes 1, 2 et 3 de l'algorithme dans la seule définition de Y. Quel est le but de la boucle, et pourquoi l'exécutez-vous 6 fois ?
0 votes
@JRodge01 J'ai repris la boucle de cet article sur AnyDice, que j'ai utilisé comme exemple : anydice.com/articles/4d6-drop-lowest J'ai supposé que le but de la boucle était de déterminer la probabilité de chaque jet dans un seul ensemble de résultats.
1 votes
Je soupçonne que cette méthode pourrait être mathématiquement équivalente à recommencer depuis le début chaque fois que vous obtenez un 7 ou moins. Si c'est le cas, cela faciliterait grandement l'analyse statistique, même si, dans la pratique, on ne procéderait pas de cette façon. Cependant, je ne sais pas comment le prouver (à part en essayant les deux méthodes empiriquement et en voyant si elles donnent des distributions similaires).
0 votes
@Medix2 anydice.com/programme/17aec C'est le code exact de ce que j'ai posté ci-dessus.