Hello again,

Thanks for the tips r.e random.ranint(). This improved matters
somewhat, however my program is still too slow. If anyone has any
further tips on how to speed it up, they would be much appreciated!

So, I'm calling evolve(L,limit) from the interactive prompt. L is
initally [[100],['NA']]. Ideally limit would be 10^7.

Here is my program:

import random
n=100

def evolve(L,limit):
        global n
        while n<limit:
                evnt = event()
                if evnt!="None":
                        ind = chooseInd(L,n)
                        action(evnt,L,ind)

def chooseInd(L,n):
        choiceSum=0
        index=0
        choice = random.randint(1,n)
        while choiceSum < choice:
                choiceSum+=L[index][0]
                index +=1
        return (index-1)

def event():
        choice = random.random()
        if choice <= .3:
                event='b'
        elif choice <= .4:
                event ='d'
        elif choice<= .5:
                event = 'm'
        else:
                event = 'None'
        return event

def action(event, L, index):
        global n
        if event == 'b':
                L[index][0]+=1
                n +=1
        elif event == 'd':
                L[index][0]-=1
                n -=1
        elif event == 'm':
                L.append([1,index])
                n +=1


thanks in advance,

Elsa.
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to