Random Drawing Simulation -- performance issue
Brendon Towle
btowle at carnegielearning.com
Wed Sep 13 09:37:17 EDT 2006
On 12 Sep 2006, at 6:33 PM, python-list-request at python.org wrote:
> Date: 12 Sep 2006 15:23:51 -0700
> From: "Simon Forman" <rogue_pedro at yahoo.com>
> 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.
More information about the Python-list
mailing list