YongWook's Notes

<파이썬> random과 배열, 생태계 개체수 예측하기 본문

-software/python

<파이썬> random과 배열, 생태계 개체수 예측하기

글로벌한량 2016. 5. 9. 10:10

파이썬의 random함수와 배열을 이용해서 생태계의 개체수를 예측하는 프로그램 예제를 공부해보자.

pop, append, extend는 배열, random, randrange는 랜덤에 쓰이는 함수이다.
설명 및 사용은 주석처리 되어있다.

import random

# 두 마리가 우연히 이 공간에서 만난다.
#  a     b               결과
# (R, R) --> (R, R, R)        토끼 2마리는 새끼를 낳아 모두 3마리가 된다.
# (R, W) --> ( W )             늑대가 토끼를 잡아 먹는다.
# (W, W) --> (W) 또는 ( )     늑대 2마리가 만나면 싸워 둘 모두 죽거나 40%,
#                              한 마리만 죽는다. 50%
#                              그리고 10%의 경우 둘을 짝이 이뤄 새끼를 낳아
#                              모두 3마리가 된다.


# 만일 초기 상태에 토끼 70마리, 늑대 30마리가 있으면 생태계는 어떻게 될까?

world = 70*["R"]+ 30*["W"]
for steps in range( 1000 ) :
    a = world.pop(random.randrange(len(world))) #random.randrange() 해당 범위내에서 random값 return
    b = world.pop(random.randrange(len(world))) #pop -> 해당 index의 원소 return후 배열에서 삭제
    if a =="R" and b == "R":
        world.extend(["R","R","R"])
    elif a == "W" and b == "W":
        p = random.random() #0~1사이의 random 실수값 return
        if p > 0.5:
            world.append("W") #원소 하나 추가시
        elif p < 0.1:
            world.extend(["W","W","W"]) #여러개 원소를 추가할 시
    else:
        world.append("W")
    print u"단계 :",steps, u"총->",len(world), u"R->",world.count("R") ,u"W->",world.count("W")


Comments