매트랩(Mathlab) 사용했습니다.
스타캐치 성공 보너스 +5%로 가정하였고 파괴확률은 고정인지, 스타캐치 보너스에 따라 감소하는지 확인불가라
두 경우 모두 천만번씩 돌려봤습니다.
파괴횟수 자체의 데이터는 사실상 의미 없고 강화비용의 분포평균 파괴횟수 정도만 의미있겠습니다.
타벨 12강화를 할 건지 말 건지 결정할 때 참고 정도하면 되겠습니다.
본섭이시면 하지마세요.

요약: 타벨 0성>12성 강화 상위 50% 비용 = 270~280억
      평균파괴횟수 = 7.6 ~ 8회
희망: 상위 10%비용 = 50~55억
절망: 하위 10%비용 = 800~880억
TMI : 최빈값 40억

1. 스타캐치 성공 보너스에 따라 파괴확률도 비례하게 감소 가정



2. 파괴확률 무조건 고정




TMI) 천만번 중 꼴찌 성적비용/파괴횟수 : 6661억 / 151회

3. 코드

trial = 10000000;
start = 0;
goal = 12;
starcatch = 0.05;
bonus_decrease_dest = true;
%--------------Do not modify below codes--------------
disp("타일런트 벨트 "+start+"성>"+goal+"성 시뮬레이션 횟수: "+trial+"회");
disp("스타캐치 성공 보너스 : +"+starcatch*100+"%");
cost = 55832200;
original_prob = [0.5 0.5 0.45 0.4 0.4 0.4 0.4 0.4 0.4 0.37 0.35 0.35 0.03 0.02 0.01];
original_dest = [0 0 0 0 0 0.018 0.03 0.042 0.06 0.095 0.13 0.163 0.485 0.49 0.5];
suc_prob = original_prob*(1+starcatch);
dest_prob = original_dest;
if(bonus_decrease_dest)
    disp("스타캐치 성공시 파괴확률 비례감소 적용");
    for i=1:15
        dest_prob(i)=original_dest(i)*(1-suc_prob(i))/(1-original_prob(i));
    end
else
    disp("스타캐치 성공 보너스와 무관하게 파괴확률 고정");
end
totcost = zeros(1,trial);
totdest = zeros(1,trial);
for i=1:trial
    lcost = 0;
    ldest = 0;
    star = start;
    chance = 0;
    while star~=goal
        lcost = lcost+cost;
        dice = rand();
        if(dice<dest_prob(star+1))
            %destroyed
            chance = 0;
            ldest = ldest+1;
            star = 0;
        else
            if(dice<1-suc_prob(star+1))
                %failed
                if(star~=0)
                    star = star-1;
                    chance = chance+1;
                else
                    chance = 0;
                end
                if(chance == 2)
                    %chance time
                    lcost = lcost+cost;
                    star = star+1;
                    chance = 0;
                end
            else
                %success
                star = star+1;
                chance = 0;
            end
        end
    end
    totcost(i) = lcost;
    totdest(i) = ldest;
end
ccc = totcost;
ddd = totdest;
costanddest = mysort(ccc,ddd);
disp("상위 50% 비용 / 파괴횟수: "+costanddest(1,round(trial/2))+" / "+costanddest(2,round(trial/2)));
disp("평균 비용 / 파괴횟수: "+sum(ccc)/trial+" / "+sum(ddd)/trial);
sss = zeros(1,1000);
sumofsss = zeros(1,1000);
ii = 1;
si = 1;
while si<1000 && ii<trial
    if costanddest(1,ii)<1000000000*si
        sss(si) = sss(si)+1;
    else
        sumofsss(si) = sumofsss(si)+sss(si);
        si=si+1;
        sumofsss(si) = sumofsss(si-1);
    end    
    ii=ii+1;
end
for j=1:9
    disp(j+"0억 컷: "+sumofsss(j)*100/trial+"%");
end
for j=1:9
    disp(j+"00억 컷: "+sumofsss(j*10)*100/trial+"%");
end
disp("1000억 컷: "+sumofsss(100)*100/trial+"%");
disp("2000억 컷: "+sumofsss(200)*100/trial+"%");
disp("3000억 컷: "+sumofsss(300)*100/trial+"%");
plot(sss);
axis([0 300 0 inf]);
title("타일런트 벨트 "+start+"성>"+goal+"성 "+trial+"회");
xlabel("단위: 10억 메소");

function sor = mysort(a,b)
    len = round(length(a)/2);
    if(len==1)
        if(length(a)==1)
            sor = vertcat(a,b);
        else
            if(a(2)<a(1))
                t=a(1);
                a(1)=a(2);
                a(2)=t;
                t=b(1);
                b(1)=b(2);
                b(2)=t;
            end
            sor = vertcat(a,b);
        end
    else
        aa = mysort(a(1:len),b(1:len));
        bb = mysort(a(len+1:length(a)),b(len+1:length(a)));
        ansum = zeros(2,length(a));
        aat = 1;
        bbt = 1;
        while(aat<=size(aa,2)||bbt<=size(bb,2))
            if(aat>size(aa,2))
                ansum(1,aat+bbt-1) = bb(1,bbt);
                ansum(2,aat+bbt-1) = bb(2,bbt);
                bbt = bbt+1;
            else
                if(bbt>size(bb,2))
                    ansum(1,aat+bbt-1) = aa(1,aat);
                    ansum(2,aat+bbt-1) = aa(2,aat);
                    aat = aat+1;
                else
                    if(aa(1,aat)<bb(1,bbt))
                        ansum(1,aat+bbt-1) = aa(1,aat);
                        ansum(2,aat+bbt-1) = aa(2,aat);
                        aat = aat+1;
                    else
                        ansum(1,aat+bbt-1) = bb(1,bbt);
                        ansum(2,aat+bbt-1) = bb(2,bbt);
                        bbt = bbt+1;
                    end
                end
            end
        end
        sor = ansum;
    end
end