Talk:City of the Damned
From Tab Wiki
Chance of Failure in Weakness Pools
During the last session I heard it mentioned that the chance of a dramatic failure in a dice pool of 5 rolled with the Gangrel's clan weakness (or the Nosferatu's clan weakness) was almost 50%. This didn't right to me, so I figured I'd test it out for different dice pools.
The exact math for probabilities greater than a dice pool of 2 gets kind of messy, so I opted for the next best approach and hacked out a quick script to give approximations. The script had a sample size of 100,000 rolls for each dice pool between 1 and 10. The approximated probabilities for Dramatic Failure, Failure, Success and Dramatic Success on a dice pool with one of those clan weaknesses is below:
Pool DFail Fail Succ DSucc 1 9.9947 60.9693 29.0333 0.0027 2 13.2294 42.3434 44.3921 0.0351 3 13.8696 32.3092 53.6325 0.1887 4 13.6056 26.0356 59.7112 0.6476 5 12.9454 21.8615 63.6596 1.5335 6 12.2038 18.6756 66.0929 3.0277 7 11.3686 16.2775 67.3159 5.038 8 10.6262 14.3535 67.4379 7.5824 9 9.8588 12.7175 66.9492 10.4745 10 9.1768 11.3509 65.7599 13.7124
As you can see, the rate of dramatic failure never goes above 14%.
And just to be complete, the code I used (Python) to come up with these numbers is below, so if you think I'm calculating something incorrectly, feel free to point out any bugs you find.
import random
trials = 1000000
def dieRoll():
success = 0
base = random.randint(1,10)
if base == 1:
success = success - 1
if base >= 8:
success = success + 1
if base == 10:
success = success + dieRoll()
return success
def diePool(pool):
global trials
count = 0
dramFail = 0
fail = 0
success = 0
dramSuccess = 0
while count < trials:
die = 0
for i in range(pool):
die = die + dieRoll()
if die < 0:
dramFail = dramFail + 1
if die == 0:
fail = fail + 1
if die > 0 and die < 5:
success = success + 1
if die >= 5:
dramSuccess = dramSuccess + 1
count = count + 1
print pool, "\t",
print dramFail/(trials / 100.0), '\t',
print fail/(trials / 100.0), '\t',
print success/(trials / 100.0), '\t',
print dramSuccess/(trials / 100.0), '\t',
print '\n',
def testPools(limit):
print "Pool\tDFail\tFail\tSucc\tDSucc"
for i in range(1, limit+1):
diePool(i)
--Thorin 18:23, 5 February 2010 (UTC)
