2016-03-22 11 views
1

私はかなりシンプルでなければならないと感じているものを解決しようとしていますが、私はしっかりとした壁に乗っています。私はいくつかの基本的な予算機能をまとめています。私の「ウィッシュリスト」のために、私は次の基準に基づいたアイテムに割り当てられた金額をしたいと思います:使用可能な資金とセット内のアイテム数に基づいて加重値を計算するにはどうすればよいですか?

  • セット
  • の優先利用可能金額の項目数アイテム

これを成功させるためには、以下の条件が満たされるべきである。

  • ドル価値のお尻Ignedは、セット内の項目の数に基づいて自動的に更新する必要があります。
  • 割り当てられたドル値は、利用可能な資金に基づいて自動的に更新されます。
  • 「借りた金額」の欄(以下)は、常に利用可能な資金と同じにする必要があります。

    利用可能な資金:ここ

は、サンプルデータセットである、だから、基本的には$ 500

|-----------------------------------------| 
| PRIORITY | ITEM NAME | Budgeted Amount | 
|-----------------------------------------| 
| 1  | Thing 1 | 92.86   | 
|-----------------------------------------| 
| 2  | Thing 2 | 85.71   | 
|-----------------------------------------| 
| 3  | Thing 3 | 78.57   | 
|-----------------------------------------| 
| 4  | Thing 4 | 71.43   | 
|-----------------------------------------| 
| 5  | Thing 5 | 64.29   | 
|-----------------------------------------| 
| 6  | Thing 6 | 57.14   | 
|-----------------------------------------| 
| 7  | Thing 7 | 50    | 
|-----------------------------------------| 

かの "もの" の変更、 "予算額" に更新する必要がありますの数「利用可能残高」に正しく追加してください。同様に、「利用可能なファンド」の値が変更された場合、「利用可能な残高」列は適切に更新されます。

理想的には、これは「ランキング」に基づいて重み付けする必要があります。さもなければ、私はボード全体で計算された平均を使用して、それが「より重要」としてリストされている点を取り除きます。

私はかなり複雑な(そして率直で)ばかげた計算を試みました。私はまた、71.43 * 1.3のような単純なものを一番上に置いて試しました。リストに7つの項目がある限り、これはすべて正常に動作します。

免責

  • 小数点値は、上記の丸みを帯びているので、彼らはおそらく、まさに「利用可能な資金」にならないでください。
  • 私は実際にこれをPHPで実装していますが、私はExcelでプロトタイプを作成しています。 PHPソリューションも同様に機能します。

正しい指示をお寄せいただければ幸いです。私はこの質問にタイトルを付ける方法も知らない。

+0

希望のリストを避け、関連するコードセグメントと、それまでに行ったコードに直面している特定の問題を提供してください。 –

+0

「希望リスト」は、私が達成しようとしている結果を示しています。なぜ私はそれを共有することを避けるだろうか分からない。プロトタイプ作成はExcelで行われているため、コードセグメントもありません。私は本当に数学の助けを求めています。 (例題で与えられた例)PHPタグがSOの提案で追加されました。私はおそらくそれを削除することができますね。 – Joe

+0

それは私が考える面白い数学の問題です。適切な数式を考案したら、その実装は簡単でなければなりません。 –

答えて

0

ランクの総ランニング合計に対する逆ランクの比率についてはすべてです。この値は、ランク項目の予算係数を示します。

<?php 

$available_budget = 500; 
echo "<h1>Total Budget = $available_budget</h1>"; 

$items = array(
    0 => "thing 1", 
    1 => "thing 2", 
    2 => "thing 3", 
    3 => "thing 4", 
    4 => "thing 5", 
    5 => "thing 6", 
    6 => "thing 7" 
); 

$count = count($items); 

// first pass calculate total running sum 
$total_running_sum = 0; 
for ($i=1; $i<=$count; $i++){ 
    $total_running_sum += $i; 
} 

// table header 
echo "<table border=1><thead><tr><th>Item</th><th>budget</th></tr></thead><tbody>"; 

// start with the last item (lowest rank) 
$items = array_reverse($items); 
for ($i=0; $i<$count; $i++){ 

    echo "<tr><td>$items[$i]</td>". 
    // divide the reverse rank by total running sum and multiply by available budget 
    "<td>". (($i+1)/$total_running_sum)*$available_budget ."</td></tr>"; 

} 
echo "</tbody></table>"; 

?> 

これは、次の表を生成します:

Total Budget = 500 

Item budget 

thing 7 17.857142857143 

thing 6 35.714285714286 

thing 5 53.571428571429 

thing 4 71.428571428571 

thing 3 89.285714285714 

thing 2 107.14285714286 

thing 1 125 

予算列は常に正確に総予算を合計します。

+0

ありがとう、ジェフ。私はひそかに「積算合計」法を避け、配列内の項目数に依存した非常に重い数式を見つけることを望んでいました。しかし、これも素晴らしいです。私はそれをわずかに変更する必要がありますが、うまくいくはずです。再度、感謝します! – Joe

関連する問題