重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
function getDivideNumber($number, $total, $index = 2) {
成都创新互联公司主要从事成都网站制作、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务利州,10多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792
// 取平均数
$divide_number = floor($number / $total * pow(10, $index)) / pow(10, $index);
$divide_number = number_format($divide_number, $index, '.', '');
// 获取最后一个数字
$last_number = $number - $divide_number * ($total - 1);
$last_number = number_format($last_number, $index, '.', '');
// 拼装平分后的数据返回
$number_str = str_repeat($divide_number . ',', $total - 1) . $last_number;
return explode(',', $number_str);
}
$array = getDivideNumber(120, 3, $index = 0);
得到平均分配的数字数组,用遍历后入库
$arr = array(50,60,70,80,90); //用数组表示5个同学的成绩
$sum = array_sum($arr);
echo '成绩总和为:'.$sum; //array_sum()直接求出总和并输出显示,本例中得到350
$con = count($arr); //count()计算学生数量,本例中得到5
$ave = $sum/$con;
echo '平均成绩为:'.$ave; //总成绩除去人数即得到平均成绩,本例中得到70
mysql_select_db("my_db", $con);
$sql="select avg(ehscore) from history";
$query=mysql_query($sql);
echo $query;
/***********
while($row=mysql_fetch_array($query))
{
echo "平均数为".$sql;
}
****************/
mysql_close($con);
select avg(ehscore) from history;查询出的结果就是平均值,直接输出就可以了,不需要后面的循环
大致思路
1)取份数的平均值
2)根据允许的各份数间最大差值,动态调整随机数范围,形成各份的数量
3)最后一份的数量由前面已经分出的决定,以保证各份的总和为指定值
代码如下:
?php
$total = 100; //待划分的数字
$div = 5; //分成的份数
$area = 10; //各份数间允许的最大差值
$average = round($total / $div);
$sum = 0;
$result = array_fill( 1, $div, 0 );
for( $i = 1; $i $div; $i++ ){
//根据已产生的随机数情况,调整新随机数范围,以保证各份间差值在指定范围内
if( $sum 0 ){
$max = 0;
$min = 0 - round( $area / 2 );
}elseif( $sum 0 ){
$min = 0;
$max = round( $area / 2 );
}else{
$max = round( $area / 2 );
$min = 0 - round( $area / 2 );
}
//产生各份的份额
$random = rand( $min, $max );
$sum += $random;
$result[$i] = $average + $random;
}
//最后一份的份额由前面的结果决定,以保证各份的总和为指定值
$result[$div] = $average - $sum;
//结果呈现
echo '划分情况:br';
foreach( $result as $temp ){
echo $temp, 'br';
}
echo '总和:', array_sum( $result );
exit;
?
?php
$a=array();
$b=0;
for ($i=0; $i 10 ; $i++) {
$a[$i]=rand(0,100);
$b+=$a[$i];
}$b=$b/10;
print_r($a);
echo"br";
print_r('平均成绩'.$b);echo"br";
$max=max($a);
print_r('最高成绩'.$max);echo"br";
$min=min($a);
print_r('最低成绩'.$min);echo"br";
$c=0;
for ($i=0; $i 10 ; $i++) {
if($a[$i]$b){
$c=$c+1;
}
}
print_r('超过平均值人数'.$c);echo"br";
纯手打不易,望采纳