本文主要是介绍初等模型——公平的奖学金名额分配,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
一、问题
二、公平分配方法
①我们先按照比例来分:
②公平分配方法:
三、计算和结果
先说一下,本篇是学校上课内容个人的整理笔记。
一、问题
三个系学生共200名(甲系100,乙系60,丙系40),20个奖学金名额,按比例分配,三个系分别为10,6,4名。现因学生转系,三系人数为103,63,34,问20个名额该如何分配?
我们按比例分配:
系别 | 学生人数 | 比例(%) | 20个的分配 | ||
比例 | 结果 | ||||
甲 乙 丙 | 103 63 34 | 51.5 31.5 17.0 | 10.3 6.3 3.4 | 10 6 4 | |
总和 | 200 | 100.0 | 20.0 | 20 |
看着蛮合理的,那么问题来了,如果增加名额至21个,该怎么分配呢?
二、公平分配方法
①我们先按照比例来分:
系别 | 学生人数 | 比例(%) | 21个的分配 | ||
比例 | 结果 | ||||
甲 乙 丙 | 103 63 34 | 51.5 31.5 17.0 | 10.815 6.615 3.570 | 11 7 3 | |
总和 | 200 | 100.0 | 21.000 | 21 |
按照比例算,四舍五入,似乎这样是合理的,但是你想,当有20个名额的时候,丙系分到了4个名额,有21个名额时,丙系却只分到了3个名额,不合理!丙系的同学们应该很气恼吧。有没有更公平的分配方式呢?
②公平分配方法:
人数 | 名额 | |
A方 | p1 | n1 |
B方 | p2 | n2 |
当p1/n1=p2/n2时,分配公平。
当p1/n1>p2/n2时,对A不公平。
当p1/n1<p2/n2时,对B不公平。
为什么呢?想一下,人数多,名额少是怎么一回事?懂了吧。
那么此时p1/n1-p2/n2即为对A的绝对不公平度。
这里看两个绝对不公平度的例子:
p1=150,n1=10,p1/n1=15
p2=100,n2=10,p1/n2=10
p1/n1-p2/n2=5
p1=1050,n1=10,p1/n1=105
p2=1000,n2=10,p1/n2=100
p1/n1-p2/n2=5
两个绝对不公平度的数值是一样的。但是举个例子你细品一下。
苹果4元一斤,现在6元一斤,涨价太快了,榴莲30元一斤现在32元了,感觉还好。
也就是说当人数非常大的时候不公平的程度会大大的减少,没有那么坑了。
将绝对度量改为相对度量:
若p1/n1>p2/n2,定义:
(p1/n1-p2/n2)/p2/n2=rA(n1,n2)即为相对A的不公平度。
比上p2/n2与GDP增长率的算法是相类似的,方便记忆。
对B的与A类似。
为了公平,这个相对度量越小越好。
接下来讨论一下几种情况:
假设初始p1/n1>p2/n2
1)若p1/(n1+1)>p2/n2,则名额应该给A【回忆一下刚刚的想法】
2)若p1/(n1+1)<p2/n2,应计算rB(n1+1,n2)
3)若p1/n1>p2/(n2+1),应计算rA(n1,n2+1)
不存在p1/n1<p2/(n2+1)。
就第二个和第三个讨论一下,
若rB(n1+1,n2)<rA(n1,n2+1),则名额应给A。
若rB(n1+1,n2)>rA(n1,n2+1),则这个名额应给B。
【给A还是B怎么确定?代入一下上面计算r的式子,得到一个新的式子,又因为想让这个数尽可能的小于是就给到了相应的组别那里。这里就不写步骤了】
得到的表达式:
发现这个形式符合:
i=1,2,3……
且给Q值较大的一方。
三、计算和结果
我们按照新的方法去分配这个人数。
当然不必每一个名额都这样计算,我们只去计算最令我们头疼的两个名额,第20个和第21个。
前面按照比例计算:甲10个,乙6个,丙3个。
第20个:
应当给甲。
第21个:
只有Q1变化了【名额增加了】,计算后应该给丙。
于是得到最终的分配人数是:
甲11个,乙6个,丙4个。
这篇关于初等模型——公平的奖学金名额分配的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!