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