Hi John and others, sorry about my etiquette errors. As you can tell I'm a newbie, and appreciate all the help I can get. I'm trying to master this thing with only the net and a couple of books as tutors.
Here is what I'm running at the interactive prompt: >>> import myBDM >>> L=[[100,'NA']] >>> myBDM.evolve(L,100000) Ideally, I'd like to bump it up to myBDM.evolve(L,10000000). L keeps track of the number of subpopulations, how many individuals are in each subpopulation, and the parent subpopulation each subpopulation arose from. Here is my code again: import random n=100 def evolve(L,limit): """ evolves the population until the population size reaches limit, by choosing an individual of a particular subpopulation type, then randomly performing a birth, death, or mutation on this individual """ global n while n<limit: evnt = event() if evnt!="None": ind = chooseInd(L,n) action(evnt,L,ind) def chooseInd(L,n): """ randomly choose one subpopulation L[i] , so that the distribution of choices is proportional to the values of L[i][0] """ choiceSum=0 index=0 choice = random.randint(1,n) while choiceSum < choice: choiceSum+=L[index][0] index +=1 return (index-1) def event(): """ randomly chooses a birth (prob .3), death (prob .1) or mutation (prob .1) 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): """ decides what happens to the population/subpopulation, based on whether the event is a birth, death or mutation """ 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 -- http://mail.python.org/mailman/listinfo/python-list