On 12 Sep 2006, at 6:33 PM, [EMAIL PROTECTED] wrote: > Date: 12 Sep 2006 15:23:51 -0700 > From: "Simon Forman" <[EMAIL PROTECTED]> > Subject: Re: Random Drawing Simulation -- performance issue > > Brendon Towle wrote: >> I need to simulate scenarios like the following: "You have a deck of >> 3 orange cards, 5 yellow cards, and 2 blue cards. You draw a card, >> replace it, and repeat N times." >> [my original code snipped] > > I got nearly a 2x speed up with this variant: > > def randomDrawing3(count, population): > res = [[0, item[1]] for item in population] > mapping = [] > for i in xrange(len(population)): > mapping.extend([i]*population[i][0]) > > n = len(mapping) > for i in xrange(count): > index = int(n * random.random()) > res[mapping[index]][0] += 1 > > return res
Excellent! For some reason, the speedup I get is only ~1.5x, but that's still non-trivial. Thanks much for the pointer- B. -- Brendon Towle, PhD Cognitive Scientist +1-412-690-2442x127 Carnegie Learning, Inc. The Cognitive Tutor Company ® Helping over 375,000 students in 1000 school districts succeed in math. -- http://mail.python.org/mailman/listinfo/python-list