随笔 - 51, 文章 - 1, 评论 - 41, 引用 - 0
数据加载中……

如何选择额定(最低)票数

      近日人力咨询一个投票的问题:21个评委从30个候选人选出近20个名额。选举规则是每个评委选有20票,30个候选人按照得票数排序,选取超过额度票数 的前20个人。如何选择额定票数,既能起门槛的作用,阻挡得票数过低的人通过,又要允许20左右的个人通过,避免出现只有几个人通过的尴尬情况。
     
      这是个概率问题,需要计算至少20个人得票数都大于额定票数(记为e)的概率(记为p),它和额定票数有反向关系。在选定一个较大概率如0.95,则问题表述为求max{e|p>=0.95}。
     
      直接推导p关于e的表达式较为困难,但可以采取数值实验的近似计算其数值。如模拟10000次投票,统计至少有20个人的得票数超过额定票数e的次数,再计算其频率,就可以分析出最佳额定票数。
     
附件代码中有两个程序,vote.exe和analyse.exe,前者模拟多次投票,后者分析e和p的数值。
> vote.exe 30 20 21 10000 > 1.txt
> analyse.exe 20 12 13 14 15 < 1.txt
第一条指令,模拟10000次投票,并将数据存放在1.txt中,第二条指令,则分析1.txt的数据,计算超过20人的得票数超过12 13 14 15的频率是多少。也可以合并为:
> vote.exe 30 20 21 10000 | analyse.exe 20 12 13 14 15
运行结果为:
1.000,0.984,0.176,0.000,
从本次计算的结果看,13票为较好的额定票数。

上述计算是假设30个候选人的实力相同,被选中的可能性相同。如果有热门候选人情况就不同,如有5个人的被选中的概率比其他人高2倍,则运行结果为:
0.994,0.436,0.002,0.000,
13票则不是好的结果。

问题没有解决,但本文在此作结。

posted on 2014-12-06 22:44 lemene 阅读(277) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理