21,887
社区成员
发帖
与我相关
我的任务
分享
function xxx(32898,33,1,999){
$arr = array();
return $arr;
}
$r = foo(32898, 33);
echo array_sum($r), PHP_EOL; //验证总和
print_r(array_count_values($r)); //查看分布
function foo($num, $k, $min=1, $max=999) {
$res = array_fill(0, $k, 1);
do {
for($i=0; $i<$k; $i++) {
$sum = array_sum($res);
$t = rand(0, $max - $min);
if($res[$i] + $t > $max) $t = $max - $res[$i];
if($sum + $t > $num) $t = $num - $sum;
$res[$i] += $t;
}
}while($num > $sum);
return $res;
}
一个可能的结果32898
Array
(
[999] => 31
[971] => 1
[958] => 1
)