Hi, I'm trying to find a way to calculate a distribution of outcomes with any combination of dice. I have the basics done, but I'm a bit unsure how to continue. My main concern is how to make this accept any number of dice, without having to write a new list comprehension for each case?
Here's a piece of code that shows the way I'm doing things at the moment. -- code begins -- # A die with n faces D = lambda n: [x+1 for x in range(n)] # A pool of 3 dice with 6 faces each pool = [D(6)] * 3 # A List of all outcomes with the current 3d6 pool. results = [x+y+z for x in pool[0] for y in pool[1] for z in pool[2]] # A dictionary to hold the distribution distribution = {} # If outcome is already a key, adds 1 to its value. # Otherwise adds outcome to keys and sets its value # to 1. def count(x): if distribution.has_key(x): distribution[x] += 1 else: distribution[x] = 1 # Maps the results with above count function. map(count, results) -- code ends -- Thanks, Tomi Lindberg -- http://mail.python.org/mailman/listinfo/python-list