Created
December 16, 2011 19:28
-
-
Save sixthgear/1487542 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import itertools | |
| import fractions | |
| def roll(faces, dice, keep): | |
| results = {} | |
| denom = faces ** dice | |
| for roll in itertools.product(*[range(1,faces+1) for d in range(dice)]): | |
| r = sum(sorted(roll, reverse=True)[:keep]) | |
| if not results.has_key(r): results[r] = fractions.Fraction(1, denom) | |
| else: results[r] += fractions.Fraction(1, denom) | |
| return results | |
| rolls = ( | |
| ('2d6', roll(6,2,2)), | |
| ('3d6', roll(6,3,3)), | |
| ('4d6k3', roll(6,4,3)), | |
| ('5d6k3', roll(6,5,3)), | |
| ('6d6k3', roll(6,6,3)), | |
| ('7d6k3', roll(6,7,3)), | |
| ) | |
| for exp,results in rolls: | |
| print 'roll %s' % exp | |
| for r,f in results.iteritems(): | |
| print '%d: %d in %d' % (r, f.numerator, f.denominator) | |
| # roll 1d6 roll 2d6 roll 3d6 | |
| # 1: 1 in 6 2: 1 in 36 3: 1 in 216 | |
| # 2: 1 in 6 3: 1 in 18 4: 1 in 72 | |
| # 3: 1 in 6 4: 1 in 12 5: 1 in 36 | |
| # 4: 1 in 6 5: 1 in 9 6: 5 in 108 | |
| # 5: 1 in 6 6: 5 in 36 7: 5 in 72 | |
| # 6: 1 in 6 7: 1 in 6 8: 7 in 72 | |
| # 8: 5 in 36 9: 25 in 216 | |
| # roll 2d6k1 9: 1 in 9 10: 1 in 8 | |
| # 1: 1 in 36 10: 1 in 12 11: 1 in 8 | |
| # 2: 1 in 12 11: 1 in 18 12: 25 in 216 | |
| # 3: 5 in 36 12: 1 in 36 13: 7 in 72 | |
| # 4: 7 in 36 14: 5 in 72 | |
| # 5: 1 in 4 roll 3d6k2 15: 5 in 108 | |
| # 6: 11 in 36 2: 1 in 216 16: 1 in 36 | |
| # 3: 1 in 72 17: 1 in 72 | |
| # roll 3d6k1 4: 7 in 216 18: 1 in 216 | |
| # 1: 1 in 216 5: 1 in 18 | |
| # 2: 7 in 216 6: 19 in 216 roll 4d6k3 | |
| # 3: 19 in 216 7: 1 in 8 3: 1 in 1296 | |
| # 4: 37 in 216 8: 17 in 108 4: 1 in 324 | |
| # 5: 61 in 216 9: 1 in 6 5: 5 in 648 | |
| # 6: 91 in 216 10: 17 in 108 6: 7 in 432 | |
| # 11: 1 in 8 7: 19 in 648 | |
| # roll 4d6k1 12: 2 in 27 8: 31 in 648 | |
| # 1: 1 in 1296 9: 91 in 1296 | |
| # 2: 5 in 432 roll 4d6k2 10: 61 in 648 | |
| # 3: 65 in 1296 2: 1 in 1296 11: 37 in 324 | |
| # 4: 175 in 1296 3: 1 in 324 12: 167 in 1296 | |
| # 5: 41 in 144 4: 5 in 432 13: 43 in 324 | |
| # 6: 671 in 1296 5: 2 in 81 14: 10 in 81 | |
| # 6: 65 in 1296 15: 131 in 1296 | |
| # roll 5d6k1 7: 1 in 12 16: 47 in 648 | |
| # 1: 1 in 7776 8: 19 in 144 17: 1 in 24 | |
| # 2: 31 in 7776 9: 14 in 81 18: 7 in 432 | |
| # 3: 211 in 7776 10: 29 in 144 | |
| # 4: 781 in 7776 11: 61 in 324 roll 5d6k3 | |
| # 5: 2101 in 7776 12: 19 in 144 3: 1 in 7776 | |
| # 6: 4651 in 7776 4: 5 in 7776 | |
| # roll 5d6k2 5: 5 in 2592 | |
| # 2: 1 in 7776 6: 41 in 7776 | |
| # 3: 5 in 7776 7: 5 in 432 | |
| # 4: 31 in 7776 8: 85 in 3888 | |
| # 5: 5 in 486 9: 37 in 972 | |
| # 6: 211 in 7776 10: 235 in 3888 | |
| # 7: 5 in 96 11: 665 in 7776 | |
| # 8: 97 in 972 12: 881 in 7776 | |
| # 9: 25 in 162 13: 1055 in 7776 | |
| # 10: 53 in 243 14: 385 in 2592 | |
| # 11: 205 in 864 15: 1111 in 7776 | |
| # 12: 763 in 3888 16: 935 in 7776 | |
| # 17: 305 in 3888 | |
| # roll 6d6k2 18: 23 in 648 | |
| # 2: 1 in 46656 | |
| # 3: 1 in 7776 roll 6d6k3 | |
| # 4: 7 in 5184 3: 1 in 46656 | |
| # 5: 1 in 243 4: 1 in 7776 | |
| # 6: 665 in 46656 5: 7 in 15552 | |
| # 7: 1 in 32 6: 13 in 7776 | |
| # 8: 3361 in 46656 7: 23 in 5184 | |
| # 9: 31 in 243 8: 149 in 15552 | |
| # 10: 373 in 1728 9: 457 in 23328 | |
| # 11: 2101 in 7776 10: 559 in 15552 | |
| # 12: 12281 in 46656 11: 451 in 7776 | |
| # 12: 4135 in 46656 | |
| # 13: 941 in 7776 | |
| # 14: 49 in 324 | |
| # 15: 1295 in 7776 | |
| # 16: 839 in 5184 | |
| # 17: 205 in 1728 | |
| # 18: 1453 in 23328 | |
| # | |
| # roll 7d6k3 | |
| # 3: 1 in 279936 | |
| # 4: 7 in 279936 | |
| # 5: 7 in 69984 | |
| # 6: 37 in 69984 | |
| # 7: 469 in 279936 | |
| # 8: 1141 in 279936 | |
| # 9: 305 in 31104 | |
| # 10: 5747 in 279936 | |
| # 11: 10409 in 279936 | |
| # 12: 6053 in 93312 | |
| # 13: 27979 in 279936 | |
| # 14: 39277 in 279936 | |
| # 15: 2711 in 15552 | |
| # 16: 1127 in 5832 | |
| # 17: 14707 in 93312 | |
| # 18: 331 in 3456 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment