티비도보지마
2020-09-14 21:43
조회: 30,513
추천: 1
타일런트 벨트 강화 시뮬레이션 결과매트랩(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
EXP
131,959
(87%)
/ 135,001
티비도보지마
|
인벤 공식 앱
댓글 알람 기능 장착! 최신 게임뉴스를 한 눈에 보자