php在一组数字中的重要性

Liz*_*ard 6 php algorithm numbers

我有一组数字,例如

$input = array(1, 4, 7, 4, 9, 4, 8, 6, 2, 8, 7, 7, 4, 5, 3);
Run Code Online (Sandbox Code Playgroud)

我试图根据以下规则计算每个数字的重要性:

随着序列变得越来越长,数字变得越来越不重要,并且每次提到一个数字,那么它将改善相关性(多少取决于它在序列中的位置).

我期待的是:

Array(
   '4' => 90%
   '1' => 75%
   '7' => 60%
   ....
)
Run Code Online (Sandbox Code Playgroud)

所以4是最重要的,然后是1然后是7等.注意输出是完全捏造的,但是表明4应该是最重要的.我相信我想要某种线性解决方案.

小智 2

这更符合你的想法吗?基于静止状态的回答

$numbers = array(1, 4, 7, 4, 9, 4, 8, 6, 2, 8, 7, 7, 4, 5, 3);
$weight = array();
$count = count($numbers);

for ($i=0; $i<$count; $i++) {
  if (!isset($weight[$numbers[$i]])) $weight[$numbers[$i]] = 1;
  $weight[$numbers[$i]] += $count + pow($count - $i, 2);
}

$max = array_sum($weight);
foreach ($weight as &$w) {
  $w = ($w / $max) * 100;
}

arsort($weight);
Run Code Online (Sandbox Code Playgroud)

结果:

Array
(
    [4] => 34.5997286296
    [7] => 17.3677069199
    [1] => 16.3500678426
    [8] => 10.0407055631
    [9] => 9.29443690638
    [6] => 5.42740841248
    [2] => 4.40976933514
    [5] => 1.35685210312
    [3] => 1.15332428765
)
Run Code Online (Sandbox Code Playgroud)