Talk:City of the Damned

From Tab Wiki

Jump to: navigation, search

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)

Current Campaign