fork download
  1. <?php
  2. /*
  3. 저작권자
  4. -MX패밀리(http://m...content-available-to-author-only...y.ml)
  5. -kmb패밀리 (http://k...content-available-to-author-only...y.net)
  6. */
  7. $times=2000; //S+ 니콜 뽑은 횟수
  8. $sum = 0; //사용한 A 니콜의달리기 개수
  9. $mrkim = 0; //3경기,4경기 부터 등판하는 S김코치 사용 개수
  10. $i = 0;
  11. $item = ["win","lose"];
  12. $values_1 = [20,80]; //1경기,2경기,3경기(단 6개 사용),4경기(단 8개 사용) 확률
  13. $values_2 = [40,60]; //3경기,4경기 확률(단 S김코치 사용했을때)
  14. $values_3 = [5,95]; //3경기,4경기확률
  15. //현질해서 김코치 사용해서 뽑기
  16. do{
  17. $i=$i+1; //니콜 한번 뽑았을때 1 추가
  18. //1경기
  19. do{
  20. $index = Percent_draw($item,$values_1);
  21. $sum = $sum+2; //1경기 A 니콜의달리기 2개 사용
  22. if($index=="win"){
  23. break;
  24. }
  25. }while(true);
  26. //2경기
  27. do{
  28. $index = Percent_draw($item,$values_1);
  29. $sum = $sum+4; //2경기 A 니콜의달리기 4개 사용
  30. if($index=="win"){
  31. break;
  32. }
  33. }while(true);
  34. //3경기
  35. do{
  36. $index = Percent_draw($item,$values_2);
  37. $sum = $sum+6; //3경기 A 니콜의달리기 6개 사용
  38. $mrkim++;
  39. if($index=="win"){
  40. break;
  41. }
  42. }while(true);
  43. //4경기
  44. do{
  45. $index = Percent_draw($item,$values_2);
  46. $sum = $sum+8; //4경기 A 니콜의달리기 8개 사용
  47. $mrkim++;
  48. if($index=="win"){
  49. break;
  50. }
  51. }while(true);
  52. }while($i<$times);
  53. echo "S+니콜 ".$i."회 뽑기 평균값(김코치 사용시)"."\n";
  54. echo "사용한 A 니콜의달리기 : ".$sum/$i."\n";
  55. echo "사용한 김코치 개수 : ".$mrkim/$i."\n\n";
  56. $sum = 0; //사용한 A 니콜의달리기 개수
  57. $mrkim = 0; //3경기,4경기 부터 등판하는 S김코치 사용 개수
  58. $i = 0;
  59. //현질없이 그냥 뽑기(단 3경기 A니콜의 달리기 6개,4경기 A니콜의 달리기 8개 사용)
  60. do{
  61. $i=$i+1; //니콜 한번 뽑았을때 1 추가
  62. //1경기
  63. do{
  64. $index = Percent_draw($item,$values_1);
  65. $sum = $sum+2; //1경기 A 니콜의달리기 2개 사용
  66. if($index=="win"){
  67. break;
  68. }
  69. }while(true);
  70. //2경기
  71. do{
  72. $index = Percent_draw($item,$values_1);
  73. $sum = $sum+4; //2경기 A 니콜의달리기 4개 사용
  74. if($index=="win"){
  75. break;
  76. }
  77. }while(true);
  78. //3경기
  79. do{
  80. $index = Percent_draw($item,$values_1);
  81. $sum = $sum+6; //3경기 A 니콜의달리기 6개 사용
  82. $mrkim++;
  83. if($index=="win"){
  84. break;
  85. }
  86. }while(true);
  87. //4경기
  88. do{
  89. $index = Percent_draw($item,$values_1);
  90. $sum = $sum+8; //4경기 A 니콜의달리기 8개 사용
  91. $mrkim++;
  92. if($index=="win"){
  93. break;
  94. }
  95. }while(true);
  96. }while($i<$times);
  97. echo "S+니콜 ".$i."회 뽑기 평균값(현질없이)"."\n";
  98. echo "사용한 A 니콜의달리기 : ".$sum/$i."\n";
  99. //확률 적용 뽑기함수
  100. function Percent_draw($items_list,$percent_list) {
  101. $range_now = 0;
  102. $range_last = 0;
  103. $decimal = 4;
  104. if(count($percent_list) != count($items_list)) return false;
  105. $draw = mt_rand(1,pow(10,$decimal)*array_sum($percent_list));
  106. for($sequence=0; $sequence<count($percent_list); $sequence++) {
  107. $range_now += pow(10,$decimal)*$percent_list[$sequence];
  108. if($range_now >= $draw && $range_last < $draw) {
  109. return $items_list[$sequence];
  110. }else{
  111. $range_last = $range_now;
  112. }
  113. }
  114. }
  115. ?>
Success #stdin #stdout 0.03s 24716KB
stdin
Standard input is empty
stdout
S+니콜 2000회 뽑기 평균값(김코치 사용시)
사용한 A 니콜의달리기 : 64.982
사용한 김코치 개수 : 4.926

S+니콜 2000회 뽑기 평균값(현질없이)
사용한 A 니콜의달리기 : 99.882