/**
* @param int $count 随机数数量
* @param int $sum 总和
* @param int $mix 最小值
* @param int $max 最大值
*/
function getRand($count, $sum, $mix, $max){
// ini_set('memory_limit', "1024M");
$i = 1;
while ($i <= $count) {
$tmp[] = mt_rand($mix, $max);
$i++;
}
$k = $sum / array_sum($tmp);
$res = [];
foreach ($tmp as $v) {
$res[] = (int) ($v * $k);
}
$assoc = $sum - array_sum($res);
$last = array_pop($res);
$res[] = $last + $assoc;
while (max($res) > $max) {
$tmax = max($res);
$key = array_search($tmax, $res);
if($key !== false){
$res[$key] = mt_rand($mix, $max);
$k = array_search(min($res), $res);
$res[$k] = $tmax - $res[$key] + min($res);
}
}
return $res;
}
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交