Re: Dice probability problem

2006-04-06 Thread Antoon Pardon
On 2006-04-05, Tomi Lindberg [EMAIL PROTECTED] wrote: Antoon Pardon wrote: def __rmul__(self, num): tp = num * [self] return reduce(operator.add, tp) sum3d6 = 3 * D(6) One basic question: is there any particular reason not to use __mul__ instead (that would allow me to use

Re: Dice probability problem

2006-04-05 Thread Antoon Pardon
Op 2006-04-04, Tomi Lindberg schreef [EMAIL PROTECTED]: First, thanks to Antoon and Alexander for replying. Antoon Pardon wrote: It would be better to construct distributions for one die and make a function that can 'add' two distributions together. As both replies pointed to this

Re: Dice probability problem

2006-04-05 Thread Tomi Lindberg
Antoon Pardon wrote: IMO you are making things too complicated and not general enough. I believe that the above is very likely more than just your opinion :) Programming is just an occasional hobby to me, and I lack both experience and deeper (possibly a good chunk of shallow as well)

Re: Dice probability problem

2006-04-05 Thread Alexander Schmolck
Tomi Lindberg [EMAIL PROTECTED] writes: # Adds another die to results. def add_dice(sums, die): # If first die, all values appear once I'd add something like sums = sums or {} because otherwise your function will sometimes mutate sums and sometimes return a fresh object, which

Re: Dice probability problem

2006-04-05 Thread Tomi Lindberg
Antoon Pardon wrote: def __rmul__(self, num): tp = num * [self] return reduce(operator.add, tp) sum3d6 = 3 * D(6) One basic question: is there any particular reason not to use __mul__ instead (that would allow me to use both 3 * D(6) and D(6) * 3, while __rmul__ raises an

Dice probability problem

2006-04-04 Thread Tomi Lindberg
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?

Re: Dice probability problem

2006-04-04 Thread Alexander Schmolck
Tomi Lindberg [EMAIL PROTECTED] writes: 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

Re: Dice probability problem

2006-04-04 Thread Alexander Schmolck
Alexander Schmolck [EMAIL PROTECTED] writes: addDice(resultFor1, pool[1]) addDice(pool[0], pool[1]) sorry should have spelled out that successive lines are meant to be equivalent, i.e. addDice(resultFor1, pool[1]) == addDice(pool[0], pool[1]) 'as --

Re: Dice probability problem

2006-04-04 Thread Antoon Pardon
Op 2006-04-04, Tomi Lindberg schreef [EMAIL PROTECTED]: 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

Re: Dice probability problem

2006-04-04 Thread Tomi Lindberg
First, thanks to Antoon and Alexander for replying. Antoon Pardon wrote: It would be better to construct distributions for one die and make a function that can 'add' two distributions together. As both replies pointed to this direction, I tried to take that route. Here's the unpolished code

Re: Dice probability problem

2006-04-04 Thread Gerard Flanagan
Tomi Lindberg wrote: # A die with n faces D = lambda n: [x+1 for x in range(n)] That can be written: D = lambda n : range(1,n+1) Gerard -- http://mail.python.org/mailman/listinfo/python-list

Re: Dice probability problem

2006-04-04 Thread Dave Mandelin
That looks reasonable. The operation you are implementing is known as 'convolution' and is equivalent to multiplying polynomials. It would be a little more general if you had the input 'die' be a sequence of the count for each outcome, so d6 would be [1]*6 (or [0]+[1]*6 if you prefer). That would