PHP-大家能否提供一个计算玩家的相对技术等级的算法

PHP-大家能否提供一个计算玩家的相对技术等级的算法

夜无邪 发布于 2017-06-03 字数 37 浏览 1128 回复 2

最好能有分析,并给出相关的代码

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

晚风撩人 2017-10-23 1 楼

Elo rating system这个系统用来计算玩家的相对技术等级,通常用于博弈类游戏,比如国际象棋.

ELO里有两个值比较关键,初始得分和每次操作的基础分($k),要根据你的具体情况决定。
ELO的基本思想就是原来得分高的人赢了得分低的人,两个人的加分减分幅度都很小,原来得分低的人赢了得分高的人,加分减分幅度都很大。由于有基础分的概念,所以受比赛场次的映像较小
这个算法的参数ra-a的旧分数;rb-b的旧分数;sa-a是否胜利.

function ELO($ra, $rb, $sa) {
$sb = 1 - $sa;
$k = 20;

$t = ($ra - $rb) / 400 ;
$pow = pow(10, $t);
$ea = 1 / (1 + $pow);

$t = ($rb - $ra) / 400 ;
$pow = pow(10, $t);
$eb = 1 / (1 + $pow);

$raNew = $ra + $k * ($sa - $ea);
$rbNew = $rb + $k * ($sb - $eb);

return array($raNew, $rbNew);
}