C'est à peu près la même chose que de prendre la moyenne arrondie, meilleur au début, pire plus tard. Favorise les plus gros dés de réussite
Lorsque j'essaie d'analyser un processus que je peux clairement décrire comme un alogrithme, mais que j'ai du mal à construire les statistiques, j'aime utiliser Monte Carlo. L'idée de base est d'avoir une fonction qui fait la chose (en utilisant un dé numérique, c'est-à-dire un générateur de nombres pseudo-aléatoires), de l'exécuter plusieurs fois en enregistrant la sortie, puis d'analyser ces données comme des résultats expérimentaux. Cela signifie que les données comporteront un certain bruit, que nous utilisons des nombres élevés pour le réduire.
En utilisant le code python à la fin de la réponse, nous obtenons le résultat simulé de 100000 personnages avec un dé de coup d8 et un mod de con de 0 passant de 1 à 20 en utilisant la règle proposée. Notez que la dernière colonne est quelque chose d'autre, nous y reviendrons.
Si l'on omet le premier niveau, qui est toujours statique, et le deuxième niveau, qui sera en moyenne le même, on obtient une légère augmentation par rapport à la moyenne pour un simple roulement. Au 3ème niveau, l'augmentation est d'environ 1 (moyenne de 18 contre 17), mais au niveau 20, l'amélioration n'est que de 9,3. Ainsi, alors que l'augmentation initiale attendue est de 5,5 au 3e niveau, elle tombe en dessous de 5 (la moyenne standard de nivellement sur un d8) au 10e niveau.
Mais une autre possibilité de cette méthode est la possibilité de faire rouler inférieur que votre précédent total de points de vie. Par conséquent, j'ai également inclus un suivi de ce phénomène, en particulier le nombre de fois où cela s'est produit (la dernière colonne du code). La probabilité moyenne est de 28,4 % pour les niveaux 1 à 20. Cela inclut évidemment certains personnages qui l'ont vécu deux fois ou plus (5 était le chiffre le plus élevé dans mon parcours), mais cela n'inclut pas le fait d'obtenir le même total de points de vie que vous.
En procédant de la même manière pour les autres tailles de dés de réussite (PC), on obtient les valeurs tabulées. Il convient de noter que le d12 est ramené à la moyenne arrondie au 20ème niveau, mais qu'il subit (légèrement) plus souvent une perte de points de vie.
Valeur
d6
d8
d10
d12
Moyenne au 20ème niveau
79.4
102.8
126.2
149.6
Petit pain à la vanille Avg
72.5
93.5
114.5
135.5
Moyenne arrondie de la vanille
82.0
103
124.0
145.0
Gain au 3ème niveau
4.2
5.5
6.7
8.0
Gain au 20ème niveau
3.8
4.8
5.9
7.0
Possibilité de diminution
24.9%
28.4%
31.0%
32.0%
Lorsque l'on examine à quel niveau les diminutions se produisent en utilisant une version légèrement différente de la fonction dans le code, nous constatons qu'elles sont orientées vers le niveau II et les niveaux impairs. Je suppose que ce dernier point est un artefact du 0,5 dans la moyenne des dés par rapport aux résultats entiers.
L'axe des ordonnées représente le nombre de niveaux avec une diminution sur 100000 passages pour cette taille de filière.
import sys
import random
def d(n):
return random.randint(1, n)
def rollNd(N, n):
return list(map(d, [n]*N))
def rollhitpoints(die, con, f):
decCounter = 0
hp = die
for level in range(2, 21):
ohp = hp
if hp < die + (die + 1)/2*(level-2) + con*level:
hp = die + sum(rollNd(level-1, die)) + con*level
if ohp > hp:
decCounter += 1
else:
hp += d(die) + con
f.write(str(hp)+'\t')
f.write(str(decCounter)+'\n')
def rollnormalhitpoints(die, con, f):
hp = die
for level in range(2, 21):
hp += d(die) + con
f.write(str(hp)+'\t')
f.write('\n')
IterCount = 100000
f = open('output/odohitpoints.txt', 'w+')
for i in range(IterCount):
rollhitpoints(8, 0, f)
f.close()