基于Elo Rating System的三国演义武将排名

  Elo Rating System是国际象棋用来给选手打分的一个算法,详情见Elo Rating System

  我们可以用这个算法对三国中的武将进行打分,然后排名。数据来源为三国武将对战记录,摘录其中几条记录如下:

  张飞VS邓茂 零合,飞一枪刺死茂。
  关羽VS程远志 零合,羽一刀挥远志为两段。
  张飞VS高升 不数合,飞刺高升坠马。 
  孙坚VS赵弘 坚从城上飞身取弘,手夺弘槊,直刺下马。
  华雄VS鲍忠 零合,忠欲退,被雄手起刀落,斩于马下。
  程普VS胡轸 不数合,程普刺中胡轸咽喉,死于马下,
  孙坚VS华雄 斗不到数合,寨后李肃军到……坚拨回马走……背后华雄追坚,坚勒回马又战十余合。坚败
  华雄VS祖茂 零合,雄大喝一声,砍茂于马下。
  华雄VS俞涉 不到三合,雄斩涉。
  华雄VS潘凤 凤去不多时,雄斩凤。
  关羽VS华雄 只一合斩了华雄
  吕布VS方悦 无五合,布一戟刺悦于马下。
  吕布VS穆顺 零合,布手起一戟,刺顺于马下。
  吕布VS武安国 十余合,布斫断安国手腕,安国弃锤于地而走。
  吕布VS公孙瓒 两合,瓒拨马速慌而走,布纵赤兔马赶来,眼看追上,张飞截住布。
  吕布VS张飞 (约数十合)酣战,飞渐渐枪法散乱,乃性起,大喊一声。
  吕布VS关羽、张飞 战三十余合,羽、飞战不倒布。
  刘备、关羽、张飞VS吕布 三人围住布,转灯儿般厮杀,布架隔遮拦不定,向备虚晃一枪,杀出围堵而逃。

   ......

  其中记录了《三国演义》中所有的武将对战记录。我们在此只考虑单挑的记录,对于像刘备、关羽、张飞VS吕布这样的群殴记录我们不予考虑。

  在算法中,所有武将初始分数为1200分,K值取16,我们按照三国演义中记录的交手顺序进行计算。

  最后得到的排名为(只取前二十名):

  关羽=1435.9727350732724
  赵云=1366.4467031255863
  张飞=1310.09496909755
  甘宁=1263.9362765401434
  徐晃=1253.1871791261267
  程普=1245.050777808431
  吕布=1244.9805894615845
  典韦=1243.4690950413606
  张辽=1241.4062895285078
  黄盖=1234.2685216090738
  孙策=1227.5161092786966
  孙坚=1224.7347507644877
  韩当=1224.7976195078772
  颜良=1221.818207572819
  华雄=1217.9055614271826
  马超=1216.368153396761
  文丑=1214.8272239273222
  周泰=1215.6149300926786

  因为有效对战记录仅仅158条,数据量太小,所以结果不是很准确,排在前几位的基本上是获胜次数最多的,关羽过五关斩六将,斩颜良诛文丑,赵云长坂坡一役击杀五员大将(淳于导、夏侯恩、宴明、钟缙、钟绅)等等。

  吕布的得分之所以这么低是因为虽然他之前打胜过关羽、张飞等,但是那时候关羽、张飞还只是初出茅庐,分数不高,三国演义中后期关羽、张飞屡次击败强敌,而吕布则英年早逝,是故得分不高。

  参考文献:

  [1] Elo Rating System

  [2] 三国武将对战记录

posted on 2012-11-13 18:56  潘的博客  阅读(562)  评论(0编辑  收藏  举报

导航