21,873
社区成员




$r = foo(32898, 53);
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;
}
Array
(
[886] => 1
[760] => 1
[470] => 1
[875] => 1
[591] => 1
[499] => 1
[257] => 1
[954] => 1
[264] => 1
[615] => 1
[770] => 1
[644] => 1
[971] => 1
[979] => 1
[259] => 1
[906] => 1
[830] => 1
[537] => 1
[595] => 1
[531] => 1
[588] => 1
[748] => 1
[767] => 1
[844] => 1
[931] => 1
[835] => 1
[986] => 1
[976] => 1
[89] => 1
[157] => 1
[408] => 1
[582] => 1
[593] => 1
[876] => 1
[710] => 1
[130] => 1
[554] => 1
[774] => 1
[386] => 1
[339] => 1
[686] => 1
[194] => 1
[903] => 1
[304] => 1
[207] => 1
[978] => 1
[232] => 1
[618] => 1
[834] => 1
[472] => 1
[839] => 1
[377] => 1
[788] => 1
)