|
2019-09-01 05:26
조회: 63,264
추천: 115
자석펫 시뮬레이션 3천만회 결과 통계1. 개요 공홈에 나와있는 확률을 참고하여 컴퓨터가 n만캐시를 들고 원더베리와 루나크리스탈을 구매/사용하여 자석펫에 도전합니다 2만캐시부터 300만캐시까지 1만 간격으로 (299케이스) 각 금액에 대해 10만번씩 시뮬레이션해서 평균비용이랑 성공률 등을 구합니다 제 대신 흑우가 되어주는 i7 CPU에 압도적 감사 맨 아래에 코드를 첨부하니 혹시 버그가 있으면 알려주세요 2. 결과 (1) 지출한 캐시 vs 자석펫 획득 개수 평균 ![]() 자석펫 1마리 평균 비용 : 54만 캐시 (2) 지출한 캐시 vs 메소 회수량 (루나서버 19년 9월 기준) ![]() ㅁㅌ시세 4000 적용 시 대략 15% 회수되는걸로 생각할 수 있습니다 (3) 지출한 캐시 vs 자석펫 개수 관련 ![]() ![]() ![]() ![]() 위 자료들로부터 다음과 같은 무시무시한 사실들이 도출됩니다. - 자석펫 1마리 뽑기 비용의 중간값은 37만 캐시입니다. - 위에서 평균값이 54만 캐시라고 했던 것보다 쌉니다. - 평균값 54만 캐시를 투자해도, 자석펫을 뽑을 확률은 65%밖에 되지 않습니다. - 이것은, 마치 스타포스처럼, 65% 가량의 유저들은 평균보다 싸게 뽑을 수 있지만, 일부 저주받은 유저들은 수십만~백만 이상까지 지출해도 한마리도 뽑지 못한다는 것을 의미합니다. - 100만 캐시를 투자해도 자석펫 1마리를 뽑지 못할 확률이 12.63%정도 됩니다. - 150만 캐시를 투자해도 자석펫 1마리를 뽑지 못할 확률이 4.20%정도 됩니다. - 200만 캐시를 투자해도 자석펫 1마리를 뽑지 못할 확률이 1.41%정도 됩니다. - 자석펫 2마리 뽑기 비용의 중간값은 85만 캐시입니다. - 자석펫 3마리 뽑기 비용의 중간값은 135만 캐시입니다. - 자석펫 3마리를 뽑을 확률이 95% 이상이 되는 지점은 300만캐시보다 조금 더 큽니다. 3. 결론 ![]() ![]() 부록 - 코드 (MATLAB) function resmat = magnetsimulation(money, verbal) price_berry1 = 5400; price_berryX = 48600; price_crystal1 = 3900; price_crystal3 = 9900; price_crystal5 = 14900; cur_berry = 0; cur_crystal = 0; cur_cookie = 0; cur_concen = 0; cur_petJ = 0; cur_petS = 0; cur_petR = 0; cur_petB = 0; cur_petM = 0; cur_key = 0; icheck = 1; while icheck == 1 if cur_petS == 0 || (cur_petS == 1 && cur_petR == 0) purchase_wonkiberry; end while cur_berry > 0 use_wonkiberry; end while (cur_petR>0 && cur_petS>0) if cur_crystal == 0 && money >= price_crystal1 purchase_crystal; end if cur_crystal > 0 use_crystal_red; end if (cur_petR>0 && cur_petS>0) && money < price_crystal1 break end end while cur_petS>1 if cur_crystal == 0 && money >= price_crystal1 purchase_crystal; end if cur_crystal > 0 use_crystal_special; end if cur_petS>1 && money < price_crystal1 break end end if (cur_petS == 0 || (cur_petS == 1 && cur_petR == 0)) && (money < price_berry1) icheck = 0; elseif cur_crystal == 0 && money < price_crystal1 icheck = 0; end end resmat = [cur_cookie, cur_concen, cur_petJ, cur_petS, cur_petR, cur_petB, cur_petM, cur_key]; fprintf("n최종 획득n - 오가닉 원더 쿠키 %d개n - 고농축 프리미엄 생명의 물 %d개n - 일반펫 %d개n - 원더블랙펫 %d개n - 루나스윗펫 %d개n - 루나드림펫 %d개n - 루나쁘띠펫 %d개n - 루나 크리스탈 키 %d개n",cur_cookie, cur_concen, cur_petJ, cur_petS, cur_petR, cur_petB, cur_petM, cur_key); function purchase_wonkiberry if money > price_berryX + price_crystal5 money = money - price_berryX; cur_berry = cur_berry + 10; if verbal == 1; fprintf("원기베리 10개를 구매하고 %d 캐시가 남았습니다. ",money); end else money = money - price_berry1; cur_berry = cur_berry + 1; if verbal == 1; fprintf("원기베리 1개를 구매하고 %d 캐시가 남았습니다. ",money); end end end function use_wonkiberry cur_berry = cur_berry - 1; p = rand; if p < 0.156 cur_cookie = cur_cookie + 1; if verbal == 1; fprintf("원기베리에서 오가닉 원더 쿠키가 나왔습니다. "); end elseif p < 0.156 + 0.1444 cur_concen = cur_concen + 1; if verbal == 1; fprintf("원기베리에서 고농축 프리미엄 생명의 물이 나왔습니다. "); end elseif p < 0.156 + 0.1444 + 0.6 cur_petJ = cur_petJ + 1; if verbal == 1; fprintf("원기베리에서 일반 펫이 나왔습니다. "); end else cur_petS = cur_petS + 1; if verbal == 1; fprintf("원기베리에서 원더블랙 펫이 나왔습니다. "); end end end function purchase_crystal if money > 3*price_crystal5 money = money - price_crystal5; cur_crystal = cur_crystal + 5; if verbal == 1; fprintf("루나 크리스탈 5개를 구매하여 %d 캐시가 남았습니다. ",money); end elseif money > 3*price_crystal3 money = money - price_crystal3; cur_crystal = cur_crystal + 3; if verbal == 1; fprintf("루나 크리스탈 3개를 구매하여 %d 캐시가 남았습니다. ",money); end else money = money - price_crystal1; cur_crystal = cur_crystal + 1; if verbal == 1; fprintf("루나 크리스탈 1개를 구매하여 %d 캐시가 남았습니다. ",money); end end end function use_crystal_red cur_crystal = cur_crystal - 1; cur_petR = cur_petR - 1; cur_petS = cur_petS - 1; p = rand; if p < 0.756 cur_petB = cur_petB + 1; if verbal == 1; fprintf("루나 크리스탈에 루나스윗 펫과 원더블랙 펫을 사용하여 루나드림 펫이 나왔습니다. "); end elseif p < 0.756 + 0.204 cur_petM = cur_petM + 1; if verbal == 1; fprintf("루나 크리스탈에 루나스윗 펫과 원더블랙 펫을 사용하여 루나쁘띠 펫이 나왔습니다. "); end else cur_key = cur_key + 1; if verbal == 1; fprintf("루나 크리스탈에 루나스윗 펫과 원더블랙 펫을 사용하여 루나 크리스탈 키가 나왔습니다. "); end end end function use_crystal_special cur_crystal = cur_crystal - 1; cur_petS = cur_petS - 2; p = rand; if p < 0.864 cur_petR = cur_petR + 1; if verbal == 1; fprintf("루나 크리스탈에 원더블랙 펫을 2마리 사용하여 루나스윗 펫이 나왔습니다. "); end elseif p < 0.864 + 0.1164 cur_petM = cur_petM + 1; if verbal == 1; fprintf("루나 크리스탈에 원더블랙 펫을 2마리 사용하여 루나쁘띠 펫이 나왔습니다. "); end else cur_key = cur_key + 1; if verbal == 1; fprintf("루나 크리스탈에 원더블랙 펫을 2마리 사용하여 루나 크리스탈 키가 나왔습니다. "); end end end end 실행 예시 >> magnetsimulation(500000,1) % 50만 캐시 사용 원기베리 10개를 구매하고 451400 캐시가 남았습니다. 원기베리에서 고농축 프리미엄 생명의 물이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리 10개를 구매하고 402800 캐시가 남았습니다. 원기베리에서 고농축 프리미엄 생명의 물이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 원더블랙 펫이 나왔습니다. 원기베리에서 고농축 프리미엄 생명의 물이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 원더블랙 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 루나 크리스탈 5개를 구매하여 387900 캐시가 남았습니다. 루나 크리스탈에 원더블랙 펫을 2마리 사용하여 루나스윗 펫이 나왔습니다. 원기베리 10개를 구매하고 339300 캐시가 남았습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 원더블랙 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 원더블랙 펫이 나왔습니다. 원기베리에서 원더블랙 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 루나 크리스탈에 루나스윗 펫과 원더블랙 펫을 사용하여 루나드림 펫이 나왔습니다. 루나 크리스탈에 원더블랙 펫을 2마리 사용하여 루나스윗 펫이 나왔습니다. 원기베리 10개를 구매하고 290700 캐시가 남았습니다. 원기베리에서 오가닉 원더 쿠키가 나왔습니다. 원기베리에서 오가닉 원더 쿠키가 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 고농축 프리미엄 생명의 물이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 원더블랙 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 고농축 프리미엄 생명의 물이 나왔습니다. 루나 크리스탈에 루나스윗 펫과 원더블랙 펫을 사용하여 루나드림 펫이 나왔습니다. 원기베리 10개를 구매하고 242100 캐시가 남았습니다. 원기베리에서 고농축 프리미엄 생명의 물이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 고농축 프리미엄 생명의 물이 나왔습니다. 원기베리에서 오가닉 원더 쿠키가 나왔습니다. 원기베리에서 원더블랙 펫이 나왔습니다. 원기베리에서 원더블랙 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 오가닉 원더 쿠키가 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 루나 크리스탈에 원더블랙 펫을 2마리 사용하여 루나쁘띠 펫이 나왔습니다. 원기베리 10개를 구매하고 193500 캐시가 남았습니다. 원기베리에서 고농축 프리미엄 생명의 물이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 고농축 프리미엄 생명의 물이 나왔습니다. 원기베리에서 오가닉 원더 쿠키가 나왔습니다. 원기베리에서 오가닉 원더 쿠키가 나왔습니다. 원기베리에서 원더블랙 펫이 나왔습니다. 원기베리에서 원더블랙 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 루나 크리스탈 5개를 구매하여 178600 캐시가 남았습니다. 루나 크리스탈에 원더블랙 펫을 2마리 사용하여 루나스윗 펫이 나왔습니다. 원기베리 10개를 구매하고 130000 캐시가 남았습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 고농축 프리미엄 생명의 물이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 원더블랙 펫이 나왔습니다. 원기베리에서 원더블랙 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 원더블랙 펫이 나왔습니다. 원기베리에서 오가닉 원더 쿠키가 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 루나 크리스탈에 루나스윗 펫과 원더블랙 펫을 사용하여 루나드림 펫이 나왔습니다. 루나 크리스탈에 원더블랙 펫을 2마리 사용하여 루나스윗 펫이 나왔습니다. 원기베리 10개를 구매하고 81400 캐시가 남았습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리 10개를 구매하고 32800 캐시가 남았습니다. 원기베리에서 고농축 프리미엄 생명의 물이 나왔습니다. 원기베리에서 원더블랙 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 고농축 프리미엄 생명의 물이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 고농축 프리미엄 생명의 물이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리에서 일반 펫이 나왔습니다. 루나 크리스탈에 루나스윗 펫과 원더블랙 펫을 사용하여 루나쁘띠 펫이 나왔습니다. 원기베리 1개를 구매하고 27400 캐시가 남았습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리 1개를 구매하고 22000 캐시가 남았습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리 1개를 구매하고 16600 캐시가 남았습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리 1개를 구매하고 11200 캐시가 남았습니다. 원기베리에서 고농축 프리미엄 생명의 물이 나왔습니다. 원기베리 1개를 구매하고 5800 캐시가 남았습니다. 원기베리에서 일반 펫이 나왔습니다. 원기베리 1개를 구매하고 400 캐시가 남았습니다. 원기베리에서 일반 펫이 나왔습니다. 최종 획득 - 오가닉 원더 쿠키 7개 - 고농축 프리미엄 생명의 물 14개 - 일반펫 61개 - 원더블랙펫 0개 - 루나스윗펫 0개 - 루나드림펫 3개 - 루나쁘띠펫 2개 - 루나 크리스탈 키 0개 다음은 위 코드를 반복실행해서 금액별 통계 뽑는 함수 function resmat = magnetpara(mstart,mend,minterval,msamp) meso_cookie = 0.025; meso_concen = 0.28; meso_petJ = 0.12; meso_petS = 9; meso_petR = 10; meso_petB = 2; meso_key = 8.5; mnumber = (mend-mstart)/minterval + 1; resmat = zeros(mnumber,6); parfor mi = 1:mnumber money = mstart + minterval * (mi-1); sum_petM = 0; sum_meso = 0; tempsum1M = 0; tempsum2M = 0; tempsum3M = 0; for ms = 1:msamp tempmat = magnetsimulation(money, 0); sum_petM = sum_petM + tempmat(7); sum_meso = sum_meso... + meso_cookie * tempmat(1) ... + meso_concen * tempmat(2) ... + meso_petJ * tempmat(3) ... + meso_petS * tempmat(4) ... + meso_petR * tempmat(5) ... + meso_petB * tempmat(6) ... + meso_key * tempmat(8); if tempmat(7) >= 1 tempsum1M = tempsum1M + 1./msamp; end if tempmat(7) >= 2 tempsum2M = tempsum2M + 1./msamp; end if tempmat(7) >= 3 tempsum3M = tempsum3M + 1./msamp; end end resmat(mi,:) = [money, sum_petM / msamp, sum_meso / msamp, tempsum1M, tempsum2M, tempsum3M]; end 무려 병렬계산 지원하는 갓 MATLAB ![]() 클레임 환영합니다
|









