Now computing casting probability over turns
This commit is contained in:
parent
e7a14dafc1
commit
21c40b275a
1 changed files with 23 additions and 3 deletions
24
analyze.py
24
analyze.py
|
@ -39,6 +39,24 @@ def mana_curve(deck):
|
||||||
for c in costs:
|
for c in costs:
|
||||||
data[c] += 1
|
data[c] += 1
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
def rampup(deck, type=None):
|
||||||
|
print '{0} Rampup'.format((type if type else 'spell').title())
|
||||||
|
print '-' * 80
|
||||||
|
land = [c for c in deck if 'land' in c.type.split(' ')]
|
||||||
|
cards = [c for c in deck if c.cost.converted() > 0]
|
||||||
|
if type:
|
||||||
|
cards = [c for c in cards if type in c.type.split(' ')]
|
||||||
|
avgCost = sum([c.cost.converted() for c in cards]) / float(len(cards))
|
||||||
|
maxCost = sorted([c.cost.converted() for c in cards]).pop()
|
||||||
|
print 'Average {0} cost: {1:.3f}'.format(type if type else 'spell', avgCost)
|
||||||
|
avgCost = int(round(avgCost))
|
||||||
|
for turn in range(avgCost, maxCost + 1):
|
||||||
|
castable = [c for c in cards if c.cost.converted() <= turn]
|
||||||
|
pm = 1 - draw_probability(len(land), deck, avgCost, turn)
|
||||||
|
pc = 1 - draw_probability(len(castable), deck, 1, turn, avgCost)
|
||||||
|
p = 1 - pm - pc
|
||||||
|
print 'Probability of drawing {0} mana in {1} turns with a castable {3}: {2:.3f}'.format(avgCost, turn, p * 100, type if type else 'spell')
|
||||||
def types(deck):
|
def types(deck):
|
||||||
return {
|
return {
|
||||||
'Lands': len([c for c in deck if 'land' in c.type.split(' ')]),
|
'Lands': len([c for c in deck if 'land' in c.type.split(' ')]),
|
||||||
|
@ -103,5 +121,7 @@ if __name__ == '__main__':
|
||||||
graph(colors(deck), '\nColors')
|
graph(colors(deck), '\nColors')
|
||||||
graph(rarities(deck), '\nRarities')
|
graph(rarities(deck), '\nRarities')
|
||||||
|
|
||||||
print '\nProbability of drawing 4 mana in 4 turns: {0:.3f}'.format(100 * draw_probability(len([c for c in deck if 'land' in c.type.split(' ')]), deck, 4, 4))
|
print
|
||||||
print 'Probability of drawing a creature costing 4 or fewer mana in 4 turns: {0:.3f}'.format(100 * draw_probability(len([c for c in deck if 'creature' in c.type.split(' ') and c.cost.converted() <= 4]), deck, 1, 4, 4))
|
rampup(deck)
|
||||||
|
print
|
||||||
|
rampup(deck, 'creature');
|
||||||
|
|
Loading…
Reference in a new issue