PHP将一个数字划分成随机值,总和与数字相同 今天有个任务,非常奇怪,需要把一个数字值分为X个数,每个数的值是随机的,而已所随机出来的数相加必须=总数。 比如有一个数是100,我想把他分成5(或者N)份,每份的数是不一样的,但是加起来要是100,而且每份不能差距太大,这个用php如何实现? 这样我们就需要下面的PHP将一个数字划分成随机值,总和与数字相同的函数了 大致思路 1)取份数的平均值 2)根据允许的各份数间最大差值,动态调整随机数范围,形成各份的数量 3)最后一份的数量由前面已经分出的决定,以保证各份的总和为指定值 岑溪网站开发提供函数:http://www.12345t.com/ 0 ){ $max = 0; $min = 0 - round( $area / 2 ); }elseif( $sum 29 [1] => 18 [2] => 17 [3] => 2 [4] => 34 ) 以上结果显示,返回的数组大小基本一样,各数相加等于总数,到此任务完成!
<?php
header("Content-Type: text/html;charset=utf-8");
$total=20;//红包总额
$num=10;// 分成10个红包,支持10人随机领取
$min=0.01;//每个人最少能收到0.01元
for ($i=1;$i<$num;$i++) {
$safe_total=($total-($num-$i)*$min)/($num-$i);//随机安全上限
$money=mt_rand($min*100,$safe_total*100)/100;
$total=$total-$money;
$arr['res'][$i] = array(
'i' => $i,
'money' => $money,
'total' => $total
);
}
$arr['res'][$num] = array('i'=>$num,'money'=>$total,'total'=>0);
$arr['msg'] = 1;
echo json_encode($arr);
?>