使用PHP或Python,但我确信基本功能是不可知的.
我不确定正确的术语,数学理论或算法是什么,否则我肯定Google会在几分钟内为我解决这个问题.
我有一个类似于以下的数据集:
cost | qty | ppl | store
------------------------
30| 500| 10| 1
40| 600| 12| 2
35| 500| 14| 3
50| 700| 10| 1
30| 700| 12| 1
40| 250| 14| 2
Run Code Online (Sandbox Code Playgroud)
我要做的是找到基于这些限定符的"最佳"行:
从本质上讲,我试图在"团购"的情况下找到最好的特定"交易",在这种情况下,需要最少数量的人才能获得最佳的"价值"(数量 - 成本 - 成本).
在我看来,由于数量的增加,最好的整体将是第5行.
如果有一个名称,以及关于这个主题的好文章(维基百科?),我很乐意自己完成这个.谢谢你的时间!
qty / (cost * ppl)
按该数字计算和排序列表.这个数字将更高更高qty
和更低的cost
和ppl
.
你可能想要使用这样的东西(python):
def cmp(a, b):
return (a["qty"] / (a["cost"] * a["ppl"])) - (b["qty"] / (b["cost"] * b["ppl"]))
list = sorted(list, cmp)
Run Code Online (Sandbox Code Playgroud)
解释:想想如果qty
在cost * ppl
不变的情况下变得更大会发生什么.这个比例会增加,因为a/x > b>x
如果a > b
.现在有了另外两个价值观,反之亦然; 那么x/a > x/b
,如果a < b
这个比例实际上会在减少cost
或ppl
增加时减少(想想如果你将100美元分成两个人而不是三个人会发生什么;如果你将它分成两个,每个人将获得100/2 = 50美元.如果你分裂它到三,每个将得到100/3~ = 33 $,这是更少).(对不起,如果我说得不够清楚;我很累)