我不确定正确的术语,数学理论或算法是什么,否则我肯定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
我要做的是找到基于这些限定符的“最佳”行:
>成本:越低越好.
>数量:越高越好.
> ppl:越低越好.
>商店:在这种情况下无关紧要,但后来用于根据“商店”找到“最佳”.
从本质上讲,我试图在“团购”的情况下找到最好的特定“交易”,在这种情况下,需要最少数量的人才能获得最佳的“价值”(数量 – 成本 – 成本).
在我看来,由于数量的增加,最好的整体将是第5行.
如果有一个名称,以及关于这个主题的好文章(维基百科?),我很乐意自己完成这个.谢谢你的时间!
解决方法:
计算qty /(cost * ppl)并按该数字对列表进行排序.对于更高的数量和更低的成本和ppl,这个数字会更高.
你可能想要使用这样的东西(python):
def cmp(a, b):
return (a["qty"] / (a["cost"] * a["ppl"])) - (b["qty"] / (b["cost"] * b["ppl"]))
list = sorted(list, cmp)
解释:想想当cost * ppl不变时,如果qty变大,会发生什么.该比率将增加,因为a / x> 1. b> x,如果a>>湾现在有了另外两个价值观,反之亦然;如果x / a> x / b,然后是< b,所以当成本或人口增加时,比率实际上会降低(想想如果你将100美元分成两个人而不是三个人会发生什么;如果你将它分成两个,每个人将获得100/2 = 50美元.如果你分裂它到三,每个将得到100 / 3~ = 33 $,这是更少). (对不起,如果我说得不够清楚;我很累)
标签:python,php,math 来源: https://codeday.me/bug/20190827/1738699.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。