From eb06f55fa0fa6cb07bbeffc7e85c6ac0bfaa67b3 Mon Sep 17 00:00:00 2001 From: lkeme <1462364497@qq.com> Date: Sat, 16 Oct 2021 15:44:56 +0800 Subject: [PATCH] [update] Judge --- src/plugin/Judge.php | 47 ++++++++++++++++++++++++++++++++------------ 1 file changed, 34 insertions(+), 13 deletions(-) diff --git a/src/plugin/Judge.php b/src/plugin/Judge.php index ab70a6c..004364b 100644 --- a/src/plugin/Judge.php +++ b/src/plugin/Judge.php @@ -46,22 +46,19 @@ public static function run() if (!self::jury()) { self::setLock(mt_rand(60, 120) * 60); } - // + // 任务 if (empty(self::$wait_case)) { - // 获取任务 + // 获取 $case_id = self::caseObtain(); self::caseCheck($case_id); - // 如果没有设置时间 就设置个默认时间 可能在一秒钟内处理完 所以 <= - if (self::getLock() <= time()) { - self::setLock(1 * 60 + 5); - } } else { + // 执行 $case = array_pop(self::$wait_case); self::vote($case['id'], $case['vote']); - // 如果没有设置时间 就设置个默认时间 可能在一秒钟内处理完 所以 <= - if (self::getLock() <= time()) { - self::setLock(mt_rand(15, 30) * 60); - } + } + // 如果没有设置时间 就设置个默认时间 可能在一秒钟内处理完 所以 <= + if (self::getLock() <= time()) { + self::setLock(mt_rand(15, 30) * 60); } } @@ -74,13 +71,14 @@ public static function run() */ private static function caseCheck($case_id) { - if ($case_id == "") { + if ($case_id == '') { return true; } $case_info = self::caseInfo($case_id); $case_opinion = self::caseOpinion($case_id); if (!$case_opinion && empty($case_opinion)) { - $vote_info = $case_info[array_rand($case_info)]; +// $vote_info = $case_info[array_rand($case_info)]; + $vote_info = $case_info[self::probability()]; } else { $vote_info = $case_opinion[array_rand($case_opinion)]; @@ -89,6 +87,7 @@ private static function caseCheck($case_id) $vote_text = $vote_info['vote_text']; Log::info("案件 $case_id 的预测投票结果:$vote($vote_text)"); array_push(self::$wait_case, ["id" => $case_id, 'vote' => $vote]); + self::setLock(1 * 60 + 5); } /** @@ -112,7 +111,8 @@ private static function vote(string $case_id, int $vote) ]; $raw = Curl::post('pc', $url, $payload, $headers); $de_raw = json_decode($raw, true); - //{"code":0,"message":"0","ttl":1} + // {"code":0,"message":"0","ttl":1} + // {"code":25018,"message":"不能进行此操作","ttl":1} if (isset($de_raw['code']) && $de_raw['code']) { Log::warning("案件 $case_id 投票失败 $raw"); } else { @@ -303,4 +303,25 @@ private static function randInt(int $max = 17): string return implode("", $temp); } + /** + * @use 概率 + * @return int + */ + private static function probability(): int + { + $result = 0; + $prize_arr = [0 => 25, 1 => 40, 2 => 25, 3 => 10]; + // 概率数组的总概率精度 + $sum = array_sum($prize_arr); + // 概率数组循环 + foreach ($prize_arr as $key => $value) { + if (mt_rand(1, $sum) <= $value) { + $result = $key; + break; + } + $sum -= $value; + } + return $result; + } + } \ No newline at end of file