From 9519a17eaa5f4553f1bdc42b0c0e2a76770b9c83 Mon Sep 17 00:00:00 2001 From: hide_d Date: Sun, 11 Mar 2018 22:15:47 +0900 Subject: [PATCH] =?UTF-8?q?=EB=AC=BC=EC=9E=90=20=EC=A1=B0=EB=8B=AC,=20?= =?UTF-8?q?=EC=9D=B8=EC=9E=AC=20=ED=83=90=EC=83=89,=20=EA=B5=B0=EB=9F=89?= =?UTF-8?q?=20=EB=A7=A4=EB=A7=A4=EC=8B=9C,=20'=EB=9E=9C=EB=8D=A4=20?= =?UTF-8?q?=EA=B2=BD=ED=97=98'=EC=9D=B4=20=ED=98=84=EC=9E=AC=20=EB=8A=A5?= =?UTF-8?q?=EB=A0=A5=EC=B9=98=20=EB=B9=84=EC=A4=91=EC=9D=84=20=EB=94=B0?= =?UTF-8?q?=EB=A5=B4=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- che_close/func.php | 26 ++++++++++++++++++++++++++ che_close/func_process.php | 8 ++++---- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/che_close/func.php b/che_close/func.php index 96aeb76..b61a88e 100644 --- a/che_close/func.php +++ b/che_close/func.php @@ -12,6 +12,32 @@ function randF(){ return mt_rand() / mt_getrandmax(); } +/** + * 각 값의 비중에 따라 랜덤한 값을 선택 + * + * @param array 각 수치의 비중 + * + * @return object 선택된 랜덤 값의 key값. 단순 배열인 경우에는 index + */ +function ChooseRandomItem($items){ + $sum = 0; + foreach($items as $value){ + $sum += $value; + } + + $rd = randF()*$sum; + foreach($items as $key=>$value){ + if($rd <= $value){ + return $key; + } + $rd -= $value; + } + + //fallback. 이곳으로 빠지지 않음 + end($items); + return key($items); +} + // 37.5 ~ 75 function abilityRand() { $total = 150; diff --git a/che_close/func_process.php b/che_close/func_process.php index f152862..b751b86 100644 --- a/che_close/func_process.php +++ b/che_close/func_process.php @@ -805,7 +805,7 @@ function process_9($connect, &$general) { MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); } - switch(rand()%3) { + switch(ChooseRandomItem(array($general['leader'], $general['power'], $general['intel']))) { case 0: $general[leader2]++; $query = "update general set resturn='SUCCESS',leader2='$general[leader2]',dedication=dedication+'$ded',experience=experience+'$exp' where no='$general[no]'"; @@ -1981,7 +1981,7 @@ function process_29($connect, &$general) { if(rand() % $criteria > 0) { $exp = 100; $ded = 70; - switch(rand()%3) { + switch(ChooseRandomItem(array($general['leader'], $general['power'], $general['intel']))) { case 0: $general[leader2] += 1; break; case 1: $general[power2] += 1; break; case 2: $general[intel2] += 1; break; @@ -1991,7 +1991,7 @@ function process_29($connect, &$general) { // 탐색 성공 $exp = 200; $ded = 300; - switch(rand()%3) { + switch(ChooseRandomItem(array($general['leader'], $general['power'], $general['intel']))) { case 0: $general[leader2] += 3; break; case 1: $general[power2] += 3; break; case 2: $general[intel2] += 3; break; @@ -3934,7 +3934,7 @@ function process_49($connect, &$general) { MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); // 경험치 상승 - switch(rand()%3) { + switch(ChooseRandomItem(array($general['leader'], $general['power'], $general['intel']))) { case 0: $general[leader2]++; $query = "update general set leader2='$general[leader2]' where no='$general[no]'";