get_minamount($total_amount,$num); if($min_amount > 0) { foreach($ret as &$val) { $val += $min_amount; } $total_amount -= $min_amount * $num; } $max_val = 0; $max_amount = $this->get_maxamount($total_amount,$num); for ($i = 0; $i < $num && $total_amount > 0;) { $amount = intval(mt_rand(0, $max_amount)); $amount = $amount > $total_amount ? $total_amount : $amount; $ret[$i] += $amount; $total_amount -= $amount; $max_val = $ret[$i] > $max_val ? $ret[$i] : $max_val; if($i == $num -1) { $i = 0; } else { $i++; } } $max_val = doubleval($max_val) / 100; $min_val = $ret[0]; foreach ($ret as &$val) { $min_val = $min_val > $val ? $val : $min_val; $val = doubleval($val) / 100; } $min_val = doubleval($min_val) / 100; for($index = 0; $index < $num - 1; $index++) { $pos_a = mt_rand(0, $num - 1); $pos_b = mt_rand(0, $num - 1); $tmp = $ret[$pos_a]; $ret[$pos_a] = $ret[$pos_b]; $ret[$pos_b] = $tmp; } return $ret; } }