如何从大数字生成修复较小的随机数。添加这些较小的数字必须等于大数。假设我想生成400个随机数并添加这些较小的数字=例如1,000,000。每个数字都应该是唯一的,并且赋值给它。像数字1 = 1000和数字2可能只包含5.但所有数字的总和必须是一个大数字。有什么算法可以在php中进行这种操作吗?
答案 0 :(得分:1)
function array_generate_sum($n, $total)
{
$sum = 0;
$arr = array();
for( ; $n >= 0; $n--)
{
$current = $n == 0 ? $total - $sum : mt_rand(1, $total - $sum - $n);
$sum += $current;
$arr[] = $current;
}
return $arr;
}
// Generate an array of 5 values whose sum is 30
array_generate_sum(5, 30);