1

0 を含む +/- 6 (つまり、6,5,4,3,2,1,0,-1,-2,-3,-4,-5,-6) の数字が来る可能性があります。私がPHPで持っているランキングアルゴリズムから。

+/- 6 を返す代わりに、0 から 100 までの数値を返したいと思います。相関関係は次のようになります。

100 = +6
..
75 = +3
..
50 = 0
..
25 = -3
..
0 = -6

ランキング アルゴリズムの出力範囲を考慮して、PHP でこれをプログラムでどのように達成できますか? 私は次のことを検討しましたが、最善のアプローチについては不明です。

function score_alg($x) {
  if ($x == '6')
    return 100;
  if ($x == '3')
    return 75;
  if ($x == '0')
    return 50;
  if ($x == '-3')
    return 25;
  if ($x == '-6')
    return 0;
}
4

7 に答える 7

5

これはうまくいきます:

function score_alg($x) {
  return round(($x+6)*(100/12));
}
于 2013-07-19T19:01:30.277 に答える
1

私が利用する小さな一般的な範囲関数があります:

関数 mapToRange($value, $in_min, $in_max, $out_min, $out_max ) {
   return round(($value - $in_min) * ($out_max - $out_min) / ($in_max - $in_min) + $out_min);
}

次のように使用します。

echo ( mapToRange( 0, -6, 6, 0, 100 )); // output is 50

于 2016-08-17T21:17:09.643 に答える
1

範囲を「伸ばす」ことができます:

function score_alg($x) {
    return round(($x + 6) * (100 / 12));
}
于 2013-07-19T19:01:21.640 に答える
1

次のようにします。

function score_alg($x) {
  $val = ($x + 6)*(100/12); 
  return round($val);
}

出力:

echo score_alg(6); //100
echo score_alg(3); //75
echo score_alg(0); //50
echo score_alg(-3); //25
echo score_alg(-6); //0
于 2013-07-19T19:01:40.283 に答える
0

あなたがすることができます:

function score_alg($x) {
  return round(($x + 6)*(100/12)); 
}
于 2013-07-19T19:00:39.453 に答える