在可变数量的值中,我需要计算平均值。挑战:平均值只能是以下固定值之一(最接近!):
return_sequences=False
我计算平均值如下:
$allowedAverageValues = [0.66, 1, 1.33, 1.66, 2]
如何确定$ allowedAverageValues中最接近$ average的值?因此,理想的结果是$randomValues = [1.33, 1, 0.66, 1, 2, 1.33];
$average = array_sum($randomValues)/count($randomValues); // returns 1.22
。
答案 0 :(得分:0)
我认为这就是您要寻找的:
<?php
function getClosest($search, $arr) {
$closest = null;
foreach ($arr as $item) {
if ($closest === null || abs($search - $closest) > abs($item - $search)) {
$closest = $item;
}
}
return $closest;
}
$randomValues = [1.33, 1, 0.66, 1, 2, 1.33];
$average = array_sum($randomValues)/count($randomValues); // returns 1.22
$res = getClosest($average, $randomValues);
print_r($res); // returns 1.33
答案 1 :(得分:0)
$arr = [0.66, 1, 1.33, 1.66, 2];
function getNearest($arr,$var){
usort($arr, function($a,$b) use ($var){
return abs($a - $var) - abs($b - $var);
});
return array_shift($arr);
}
$randomV = [1.33, 1, 0.66, 1, 2, 1.33];
$ave = array_sum($randomV)/count($randomV);
$res = getNearest($ave, $randomV);
print_r($res);