1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| public static function lotto($weight = array()) { $roll = sprintf("%.2f", mt_rand() / mt_getrandmax() * (array_sum($weight))); $_tmpW = 0; $rollnum = 0; foreach ($weight as $k => $v) { $min = $_tmpW; $_tmpW += $v; $max = $_tmpW; if ($roll > $min && $roll <= $max) { $rollnum = $k; break; } } if ($rollnum == 0 && !is_string($rollnum)) { return self::lotto($weight); } return $rollnum; } $lottoArr[1] = 40; //要随机的id =》权重 $lottoArr[2] = 20; $lottoArr[3] = 40; $randId = self::lotto($lottoArr); //开始随机
|