用于评分的php中的参考值(min x = 1,max y = 100)

时间:2014-04-18 22:41:17

标签: php math max min scoring

我想做一个小小的得分,但我偶然发现数学。我想你会处理它:-)我有几个值:例如 124,426,100,24,41 。最高的shell是MaxScore = 100(此处为426),最小MinScore = 1(此处为24)。 MaxScore MinScore shell之间的每个值(此处为124,100,41)都会得到一个自己的分数,与最小值和最大值相关。

使用php max(),我得到了

$max = max(124, 426, 100, 24, 41);

426 为最高, min()

$min = min(124, 426, 100, 24, 41);

24 为最低值。精细。

下一步可能是:426 = 100和24 = 1.但其余的?计算的是什么?正如您所看到的,它不是程序员问题(尚未),而是数学问题。我希望我确实让自己清楚了。谢谢!

2 个答案:

答案 0 :(得分:2)

好的,这似乎有效。可能需要更多括号。

$new_val = 1 + (($val - $min) * (99 / ($max - $min)))

答案 1 :(得分:1)

您可以做的一件事就是将每个值应用为$val * ($max - $min) / 100;

编辑我倒退了。这将是$val / (($max - $min) / 100);这将$min$max之间的差异除以100个。因此每件作品都会应用它。这将使100为100 / ((426 - 24) / 100) = 24.875,并且它会将所有值减少到1到100之间的数字。

EDIT。要使min为1且最大值为100并保持分数之间的关系,我们需要应用比率并减去一个常数。

验证Andrew Nee的评论似乎可以解决问题。

php -r "$a = array(123,426,100,24,41);print_r(array_map(function($val){$min=24;$max=426;return 1 + (($val - $min) * (99/($max - $min)));},$a));"

Array
(
    [0] => 25.380597014925
    [1] => 100
    [2] => 19.716417910448
    [3] => 1
    [4] => 5.1865671641791
)