把一个整数随机折分?比如把100随机折分20分,20分加起来必须等于100

$all=100;
/***
 *all 要分配的总数
 *times 要分配的次数
 *max 分配能够达到的最大值
 *min 分配的最小值
 *
 *先采用用户的分配‘最大值’,如果这个分配值大于当前剩余的总数,那这个最大值也就没有意义,就直接用当前剩余的最大值作为参考
 */
function distribution($all,$times="",$max="",$min=0){
	if($times=="")return 0;
	if($max==""){$max=$all;}
	$num=(int)$times;
	for($i=0;$i<$num;$i++){
		if($max>$all){$max=$all;}
		$tmp=mt_rand($min,$max);
		$result[]=$tmp;
		$all-=$tmp;
		echo $tmp."<br>";
	}
	return $result;
}

$res=distribution($all,20,5,0);
echo array_sum($res);

 

posted @ 2015-06-05 15:16  大匠  Views(250)  Comments(0Edit  收藏  举报