소스코드 지적 해주신분 감사합니다.
아마랭킹 S부터 A팔레트 3개씩 들어갑니다.
모두의마블 신 행운아이탬인 매직브러시가 나왔습니다.
그래서 넷마블 측이 발표한 뽑기 확률을 바탕으로
매직브러시를 뽑는데 몇개의 A팔레트가 필요한지 계산해 평균을 내는 코드를 짜봤습니다.
돈마블 뽑기 확률표 : https://cafe.naver.com/momakakao/5421396
실험 해보실분 : https://ideone.com/ZXmP3F 가서
$times=2000 값을 $times=10000 이런식으로 바꿔서 하시면 됩니다.
php 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
<?php
/*
저작권자
-MX패밀리(http://mxfamily.ml)
도움
-kmb패밀리
기본구조
배열값을 이용한 확률뽑기(Percent_draw 함수)
각 단계별 Percent_draw 함수의 값이 1이 나오면 랭킹상승 성공,0이 나오면 실패
1 나오면 배열 오른쪽값이고 0이면 왼쪽값이니깐.......
*/
$times=2000; //매직브러시 뽑기 횟수
$sum = 0; //매직브러시 뽑는데 사용한 A팔레트 개수의 합
$values_1 = [45,55]; //A아마랭킹 10위 or 5위 확률
$values_2 = [60,40]; //A아마랭킹 5위 or 3위 확률
$values_3 = [67,33]; //A아마랭킹 3위 or 1위 확률
$values_4 = [80,20]; //A아마랭킹 1위 or S프로랭킹 10위 확률
$values_5 = [55,45]; //S아마랭킹 10위 or 5위 확률
$values_6 = [74,26]; //S아마랭킹 5위 or 3위 확률
$values_7 = [89.5,10.5]; //S아마랭킹 3위 or 1위 확률
$values_8 = [95.5,4.5]; //S아마랭킹 1위 or 애직 브러쉬 확률
do{
$i=$i+1; //매직브러시 한번 뽑을때 마다 1추가
//A아마랭킹 10위 or 5위
do{
$index = Percent_draw($values_1,1);
$sum++; //한번 팔레트 썼으니 누적
if($index==1){
break;
}
}while(true);
//A아마랭킹 5위 or 3위
do{
$index = Percent_draw($values_2,1);
$sum++;
if($index==1){
break;
}
}while(true);
//A아마랭킹 3위 or 1위
do{
$index = Percent_draw($values_3,1);
$sum++;
if($index==1){
break;
}
}while(true);
//A아마랭킹 1위 or S프로랭킹 10위
do{
$index = Percent_draw($values_4,1);
$sum++;
if($index==1){
break;
}
}while(true);
//S아마랭킹 10위 or 5위(여기서 부터 팔레트 3개씩 사용)
do{
$index = Percent_draw($values_5,1);
$sum++;
$sum++;
$sum++;
if($index==1){
break;
}
}while(true);
//S아마랭킹 5위 or 3위
do{
$index = Percent_draw($values_6,1);
$sum++;
$sum++;
$sum++;
if($index==1){
break;
}
}while(true);
//S아마랭킹 3위 or 1위
do{
$index = Percent_draw($values_7,1);
$sum++;
$sum++;
$sum++;
if($index==1){
break;
}
}while(true);
//S아마랭킹 1위 or 매직브러시 뽑음 ㅋ
do{
$index = Percent_draw($values_8,1);
$sum++;
$sum++;
$sum++;
if($index==1){
break;
}
}while(true);
}while($i<$times);
echo "매직브러시 ".$i."회 뽑기 평균값 : ".$sum/$i;
function Percent_draw($percent_list,$decimal) {
//$percentlist : 뽑을확률,밑 $contents_list 하고 배열순서에 맞게 넣어야만 함
//$decimal : 확률 소숫점 자리수,자연수면 0 그외 소수면 소수점 자리수에 맞게 넣는다.
$range_now = 0;
$range_last = 0;
$draw = rand(1,pow(10,$decimal)*array_sum($percent_list));
for($i=0; $i<count($percent_list); $i++) {
$range_now += pow(10,$decimal)*$percent_list[$i];
if($range_now >= $draw && $range_last < $draw) {
return $i;
}else{
$range_last = $range_now;
}
}
}
?>
|
cs |
결론
- 매직브러시 100회 뽑기 평균값 : 119.49
- 매직브러시 1000회 뽑기 평균값 : 128.099
- 매직브러시 3000회 뽑기 평균값 : 123.5586
- 매직브러시 5000회 뽑기 평균값 : 126.8974
- 매직브러시 10000회 뽑기 평균값 : 126.1066
매직브러시를 뽑는데 필요한 A팔레트의 개수는 126 에 수렴합니다.