0

特定のルールセットを指定して、パーセンテージに変換する必要がある値があります。

VALUE=X

ここで、Xは0から始まるものであれば何でもかまいません

もしも:

X > 200

私の関数の結果は100(パーセント)になるはずです。

もしも:

X < 200 AND >= 100

結果は100から50(パーセント)の間にあるはずです。例:X = 150は75%になります

もしも:

X < 100 AND >= 80

結果は50から25(パーセント)の間にあるはずです。例:X = 90は37.5%になります

で、もし:

X < 80

結果は25から0(パーセント)の間にあるはずです。

PHPでの私のアプローチは次のようになります

if($value > 200) return 100;
if($value > 100 && $value < 200) return ???;

... 等々。

ここで??? 明らかに私は設定方法がわからない式を表しています。

これを1つの数式で行う方法はありますか?そして、そうでない場合でも、この問題への数学的アプローチは何ですか?

とても基本的なことは知っていますが、小学校で数学の授業をあまりにも多くスキップしたようです。

4

2 に答える 2

5

関数は区分的に定義できます。

ここに画像の説明を入力

グラフィカルに、これは異なる勾配の 4 本の直線で表されます。この関数を分割せずに表現する方法はありませんが、上記の実装は非常に簡単です。

PHP では、この関数は次のように記述できます。

function f($x) {
    if ($x >= 200)
        return 100;
    if ($x >= 100 && $x < 200)
        return 50 + 50 * (($x - 100) / 100);
    if ($x >= 80 && $x < 100)
        return 25 + 25 * (($x - 80) / 20);
    if ($x < 80)
        return 25 * ($x / 80);
}
于 2012-11-18T07:09:21.913 に答える
1

まず、どの範囲に入る必要があるかを決定します。次に、次のことを行います。

  • 範囲の下限を引きます。
  • 範囲の長さで割ります。
  • 範囲内のポイント差の数を掛けます。
  • 範囲の下部にポイント数を追加します。

したがって、100 から 200 までの X は、100 から 50 までのスコアを与えます。範囲の下限は 100 です。範囲のサイズは 100 (200 - 100) で、スコアは最初の 100 から最後の 50 までなので、差は -50 です。したがって-50 * ($value - 100) / 100 + 100、機能するか、単純化するか、-0.5 * ($value - 100) + 100または150 - $value * 0.5.

80 から 100 までの別の例を使用します。範囲の下限は 80、範囲のサイズは 20、スコアは 25 から 50 になります (差: -25)。を取得-25 * ($value - 80) / 20 + 25します。これは、-1.25 * ($value - 80) + 25または125 - $value * 1.25

于 2012-11-18T07:20:26.653 に答える