본문 바로가기
프로그래밍

메이플 큐브 등급업 시뮬레이터

by 코끼리_땃쥐 2022. 6. 26.
반응형

메이플 큐브 강화 시뮬레이터를 함수로 작성해보았습니다.

메이플 큐브 강화 시뮬레이터는 사실 찾아보면 여러가지가 있는데 저는 한.. 백만번정도 돌려보고 평균을 구해보고자 만들어보았습니다.

 

코드는 이렇습니다. 파이썬으로 만들었습니다.

def cube_enforce(cube : str, start: str = "레어", end : str = "레전드리", server : str = "본섭"):
    """
    큐브종류 -> 레드큐브, 블랙큐브, 수상한큐브, 장인의큐브, 명장의큐브
    스타트/엔드 -> 레어, 에픽, 유니크, 레전드리
    리턴값 -> 횟수(int), 가격(int)
    """
    if server == "리부트":
        cube_money = { "레드큐브" : [12500000, "메소"]
                , "블랙큐브" : [22600000, "메소"]
                , "수상한큐브" : [500000, "메소"]
                , "장인의큐브" : [4900000, "메소"]
                , "명장의큐브" : [7000000, "메소"]}
    else:
        cube_money = { "레드큐브" : [1200, "캐시"]
                , "블랙큐브" : [2200, "캐시"]
                , "수상한큐브" : [30000, "메소"]
                , "장인의큐브" : [14000000, "메소"]
                , "명장의큐브" : [25000000, "메소"]}

    cube_percent_legend = { "레드큐브" : 0.3
            , "블랙큐브" : 1
            , "수상한큐브" : 0
            , "장인의큐브" : 0
            , "명장의큐브" : 0.1996 }

    cube_percent_unique = { "레드큐브" : 1.8
            , "블랙큐브" : 3.5
            , "수상한큐브" : 0
            , "장인의큐브" : 1.1858
            , "명장의큐브" : 1.6959}

    cube_percent_epic = { "레드큐브" : 6
            , "블랙큐브" : 15
            , "수상한큐브" : 0.9901
            , "장인의큐브" : 4.7619
            , "명장의큐브" : 7.9994}

    cube_grade_str = { "레어" : 1
                , "에픽" : 2
                , "유니크" : 3
                , "레전드리" : 4
    }
    
    count = 0
    cash_money = 0
    meso_money = 0
    start_gread = cube_grade_str[start]
    end_gread = cube_grade_str[end]
    while True:
        percent = random.random() * 100
        count += 1 

        if cube_money[cube][1] == "메소":
            meso_money += cube_money[cube][0]
        elif cube_money[cube][1] == "캐시":
            cash_money += cube_money[cube][0]

        if start_gread == end_gread:
            break
        else:
            if start_gread == 1:
                if percent <= cube_percent_epic[cube]:
                    start_gread += 1
            elif start_gread == 2:
                if percent <= cube_percent_unique[cube]:
                    start_gread += 1
            elif start_gread == 3:
                if percent <= cube_percent_legend[cube]:
                    start_gread += 1
        
    return count, cash_money, meso_money

사용할 큐브이름, 시작할 등급, 원하는 등급, 서버

이렇게 4가지 인자를 받습니다.

 

우선 간단하게 잘 작동하는지 먼저 테스트를 돌려보았습니다.

 

 

서버를 따로 넘겨주지 않은 이유는 기본값으로 본섭으로 되어있습니다.

 

첫번째 결과입니다.

두번째 결과입니다.

세번째 결과입니다.

 

첫번째와 두번째는 얼추 비슷한것 같지만 세번째는 89번만에 레어에서 레전드리까지 올라갔습니다.

이렇게 들쭉 날쭉한 결과가 나옵니다.

 

총 백만번정도 반복하면서 평균치를 구해봅니다(백만번 정도면 거의 평균치라고 생각 할수 있기 때문입니다.)

count = 1000000

data_count = 0
data_cash = 0
data_meso = 0

for idx in range(count):
    data = cube_enforce("블랙큐브", "레어", "레전드리")
    data_count += data[0]
    data_cash += data[1]
    data_meso += data[2]

data_count = data_count/count
data_cash = data_cash/count
data_meso = data_meso/count

print(f"평균 블랙큐브를 {data_count}정도 사용하였고 캐시는 {data_cash}만큼 썻으며 메소는 {data_meso} 사용했습니다.")

 

백만번을 돌려본 결과 입니다.

첫번째 결과입니다.

두번째 결과입니다.

세번째 결과입니다.

 

첫번째 두번째 세번째 결과가 거의 같은 값을 가리키게 되었습니다

 

블랙큐브를 이용하여 레어->레전드리 등급업 평균횟수는 약 136회 평균 가격은 30만원 정도 인것으로 알수있습니다.

 

리부트나 레드큐브를 이용한 등급업등 다른것이 궁금하면 코드를 살짝 수정하셔서 테스트 해보시면 됩니다.

 

반응형

'프로그래밍' 카테고리의 다른 글

용어정리  (3) 2022.09.20
이름 궁합 테스트 만들기  (0) 2022.06.06
로또번호 랜덤 뽑기  (0) 2022.06.02
메이플 스타포스 강화 시뮬레이션 코드  (0) 2022.06.02
export(함수 내보내기)  (0) 2022.04.02

댓글