较大数量的较小数字生成和总数较小的数字必须是大数字

时间:2011-11-15 19:10:26

标签: php

如何从大数字生成修复较小的随机数。添加这些较小的数字必须等于大数。假设我想生成400个随机数并添加这些较小的数字=例如1,000,000。每个数字都应该是唯一的,并且赋值给它。像数字1 = 1000和数字2可能只包含5.但所有数字的总和必须是一个大数字。有什么算法可以在php中进行这种操作吗?

1 个答案:

答案 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);