|
2015-12-14 08:59
조회: 2,200
추천: 11
내 승률 #로 몇 게임을 하면 @등급을 갈까?네... 시험공부 하다가 너무 하기싫어서 프로그램 한번 짜봤습니다.
"이론적" 기대값은 지금껏 몇분이 올리셨으니 다 아실테고.. 제가 보여드릴 건 simulation 입니다. Matlab 이란 프로그램으로 짜여졌고.. 코드는 아래에 붙여놨습니다. crank 에는 current rank, 즉 현재랭크 (25~21등급은 그냥 올리시는 게.. 귀찮아서 안 넣었거든요) desire 는 원하는 랭크 rate 는 승률을 적으면 되네요 자 해봅시다. 내가 지금 20등급이고 15등급까지 가고싶다! 근데 내 승률은 40%밖에 안되네;; 얼마나 해야할까? 가 궁금하시다면 howmanygames(20, 15, 0.4) ㄱㄱ >> howmanygames(20, 15, 0.4) ans = 130 >> howmanygames(20, 15, 0.4) ans = 357 >> howmanygames(20, 15, 0.4) ans = 275 귀찮아서 3번만 돌려봤네요. 폭이 크죠? 네 큽니다. 시뮬레이션이라서 그래요. 어쩔수있나요? 뭐 .. 그렇다고요 이제 60%로 5등급까지 가볼까요? >> howmanygames(20, 5, 0.6) ans = 118 >> howmanygames(20, 5, 0.6) ans = 151 >> howmanygames(20, 5, 0.6) ans = 192 이렇다네요.. >> howmanygames(20, 0, 0.6) ans = 379 >> howmanygames(20, 0, 0.6) ans = 311 >> howmanygames(20, 0, 0.6) ans = 248 전설까진 이정도고요. 아 참고로 0등급 = 전설로 설정했습니다. 뭐.. 열심히 겜 해봅시다 아래는 프로그래밍 코드: function num = howmanygames(crank,desire,rate) startsreq = [3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 6 6 6 6 6]; cstarreq = startsreq(1); cstar = 0; rank = crank; sucwin = 0; num = 0; while( rank > 0) win = rand(); if( win < rate) cstar = cstar + 1; if cstar > cstarreq rank = rank - 1; if rank==0 break end cstarreq = startsreq(21-rank); cstar = 1; end sucwin = sucwin + 1; if (sucwin>2 && rank>5) cstar = cstar+1; end if cstar > cstarreq rank = rank - 1; cstarreq = startsreq(21-rank); cstar = 1; end else if(cstar==0 && rank==20) cstar=cstar+1; end sucwin = 0; cstar = cstar-1; if cstar<0 rank = rank +1; cstarreq = startsreq(21-rank); cstar = startsreq(21-rank)-1; end end num = num + 1; rank; if rank==desire rank=rank+1; break end end
EXP
9,027
(3%)
/ 9,801
|
베르그