首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ESL Elo公式(有问题)

ESL Elo公式(有问题)
EN

Stack Overflow用户
提问于 2012-05-11 01:20:31
回答 1查看 272关注 0票数 0

我正在尝试实现像ESL门户网站那样的ELO公式。( http://cheater.esl.eu/uk/faq/rankmodules/ )

第一个例子对应于ESL的例子,但第二个和第三个给出了疯狂的结果。我哪里错了?

代码语言:javascript
复制
    function eloEsl($k1, $k2, $g1, $g2)
{
    $per1 = $g1 / ($g1 + $g2);
    $per2 = $g2 / ($g1 + $g2);

    $E = 1/(1+ Pow(10, -($k1-$k2)/400)); 



    $Pts1 =  $k1 + 50 * ( $per1 - $E );
    $Pts2 =  $k2 + 50 * ( $per2 - $E );

    $Pts1 = round($Pts1);

    $Pts2 = round($Pts2);

    return array($Pts1, $Pts2);
}

// first test is similar to ESL example
eloEsl(1000, 1000, 3, 6); // returns  -8 / + 8

// This make crazy result !
eloEsl(1000, 1200, 5, 1); // returns  +30 / -4

// and reverse
eloEsl(1000, 1200, 1, 5); // returns  -4 / +30
EN

回答 1

Stack Overflow用户

发布于 2012-06-01 08:38:00

两个玩家的预期计算点数(变量$E)不同。所以你应该有$E1和$E2。

代码语言:javascript
复制
$E1 = 1/(1+ Pow(10, -($k1-$k2)/400)); 

$E2 = 1/(1+ Pow(10, -($k2-$k1)/400)); 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10539148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档