php实现dota天梯、wow竞技场、lol排位赛匹配加分算法ELO
public function marchOpponents()
{
$rstep = Yii::$app->params[‘ratingStep’];//(随机范围)
$rsN=100;
$db=Yii::$app->db;
$m= $this->streak*$rstep;//根据连败取人数
$c = GmPlayerRating::find()->where(“rating > :rating”,[‘:rating’=>$this->rating])->count();//分数所在排名
Yii::error(“gid “.$this->gid.” 排名 “.$c );
if ($c<$m)//如50名 要取6连胜后的-10-0名
{
$m=0;
Yii::error(” c < m “);
}else {//否则取开头 如取3连胜则取 20-30区间
$m = $c-$m;
}
//从上到下取匹配到的玩家
$sql = “select gid from gm_player_rating where gid !=:uid and protect_tm<:nowtm order by rating desc limit :m,:n”;
$values = [‘:uid’=>$this->gid,‘:nowtm’=>time(),‘:m’=>$m,‘:n’=>$rsN];
$res = $db->createCommand($sql)->bindValues($values)
->queryAll();
// if ($this->streak > 0 && count($res==0)){//连胜 取高分,上方无人
// $sql = “select gid from gm_player_rating where protect_tm<:nowtm order by rating desc limit :n”;
// $values = [‘:nowtm’=>time(),':n’=>$rstep];
// $res = $db->createCommand($sql)->bindValues($values)
// ->queryAll();
// }
if ($this->streak < 0 && count($res)==0){//连败取低分,下方无人
//
$sql = “select gid from gm_player_rating where gid !=:uid and protect_tm<:nowtm order by rating asc limit :n”;
$values = [‘:uid’=>$this->gid,‘:nowtm’=>time(),‘:n’=>$rsN];
$res = $db->createCommand($sql)->bindValues($values)
->queryAll();
}
// echo “count rest:”.count($res);
if ($res==“” || count($res)==0)
return 0;
$rx=$res[array_rand($res)];
// print_r($rx);
return $rx[‘gid’];
}
///核心 elo 算法内容计算期望值
public static function eloRatingScore($pa,$pb,$win=1)
{//按照rating 获取期望所得的声望值
$Ra=GmPlayerRating::findOne($pa)->rating;
$Rb=GmPlayerRating::findOne($pb)->rating;
$Ea = 1/(1+pow(10, ($Rb-$Ra)/400));
// $Eb = 1/(1+pow(10, ($Ra-$Rb)/400));
//胜利期望值
$rssss=(1 – $Ea);
if ($rssss<(1/Yii::$app->params[‘ratingK’]/2))$rssss=0;
$RSa = intval(Yii::$app->params[‘ratingK’] *$rssss);
//失败期望值
if ($win==-1) $RSa = intval(Yii::$app->params[‘ratingK’] * (0 – $Ea));
return $RSa;
}
php实现dota天梯、wow竞技场、lol排位赛匹配加分算法ELO的更多相关文章
- 论文翻译 DOTA:A Large-scale Dataset for Object Detection in Aerial Images
简介:武大遥感国重实验室-夏桂松和华科电信学院-白翔等合作做的一个航拍图像数据集 摘要: 目标检测是计算机视觉领域一个重要且有挑战性的问题.虽然过去的十几年中目标检测在自然场景已经有了较重要的成就 ...
- lol匹配算法
这是Riot的Design Director Tom Cadwell专门为中国玩家写的解说匹配系统工作原理的帖子. 同一时候为了让大家更好的理解匹配系统,假设您认为您遇到了特别不公平的匹配,请回复游戏 ...
- elo system
今天了解了一下游戏中的PVP模块的实现,大多数的游戏都使用到了ELO算法,刚开始的时候并不清楚这个算法是做什么的,对此开始大量查找有关于ELO算法的资源,功夫不负有心人,总算找到一些有用的资源了. 先 ...
- 《社交网络》里的评分公式——ELO排名系统
<社交网络>里的Mark Zackburg被女朋友甩后,在舍友的启发下,充分发挥了技术宅男自娱自乐的恶搞天分,做出了Facemash网站,对学校女生的相貌进行排名打分,结果网站访问流量过大 ...
- 腾讯首度公开S级手游品质管理方法
weimjsam 引言 在最新的手游市场占有率统计中,腾讯游戏稳稳占据一半江山,目前仍以每月一到两款的速度推出新品,在如此复杂多变.响应要求极高的市场环境下,能持续推出高质量产品并保持高效迭代更新 ...
- DOTA 2 Match History WebAPI(翻译)
关于DOTA 2 Match History WebAPI 的 源网页地址: http://dev.dota2.com/showthread.php?t=47115 由于源网页全英文,这边做下翻译方便 ...
- dota 路人水平鉴定器
测试的dota水平...目的是学习一下tornado框架 #coding:utf8 import tornado.web,tornado.httpserver,tornado.ioloop,torna ...
- 2018天梯赛第一次训练题解和ac代码
随着评讲的进行代码和题解会逐步放上来 2018天梯赛第一次训练 1001 : 进制转换 Time Limit(Common/Java):1000MS/10000MS Memory Limit: ...
- [转] 评 WOW技能天赋设计
本文转至:http://bbs.chinaunix.net/thread-1692302-8-1.html(只作转载, 不代表本站和博主同意文中观点或证实文中信息)再比如,传说中的面向对象本该大显神威 ...
随机推荐
- vue axios配置 发起请求加载loading请求结束关闭loading
axios带有请求拦截器,避免在每个请求里面加loading重复操作,可以封装进去,在请求开始时加载loading层,请求结束关闭,loading层用vux的loading加载 axios.js im ...
- Yii2 Model的一些常用rules规则,使用Validator验证
1. Yii2里 model在使用load方法加载浏览器的值的时候,会进行rules验证.这时候可以使用场景,让model对不同场景使用不同验证方式 2. 可以用attributeLabels()来指 ...
- 【Python算法】图与树的实现
邻接列表及其类似结构 对于图结构的实现来说,最直观的方式之一就是使用邻接列表.下面我们来实现一个最简单的:假设现在我们有n个节点,编号分别为0,...,n-1. 然后,每个邻接列表就是一个数字列表,我 ...
- Netty 粘包/半包原理与拆包实战
Java NIO 粘包 拆包 (实战) - 史上最全解读 - 疯狂创客圈 - 博客园 https://www.cnblogs.com/crazymakercircle/p/9941658.html 本 ...
- Threaten Model
探测(扫描器,情报搜集)--入侵(vul,exp)--潜伏(RATS,setmft,AFSET)--横向入侵(admin cert,RATS)---信息泄漏(vpn,rats,通讯通道)--删除踪迹( ...
- c++ socket相关
http://blog.sina.com.cn/s/blog_43ad62c70100gtow.html,一个简单的C语言的socket服务器和客户端程序 http://www.cnblogs.com ...
- JSONP使用
一.什么是JSONP jsonp是一种规则,它是利用创建html的script快的方式,将远端url放到src属性中,并以函数的形式执行远程返回值中的函数. jsonp的出现是为了解决浏览器同源策略的 ...
- Linux下桥接模式详解一
注册博客园已经好长时间,一直以来也没有在上面写过文章,都是随意的记录在了未知笔记上,今天开始本着分享和学习的精神想把之前总结的笔记逐步分享到博客园,和大家一起学习,一起进步吧! 2016-09-20 ...
- 机房断电导致MySQL同步1594错误
1.错误信息 Last_IO_Error: Got fatal error from master when reading data from binary log: ' at 208645951. ...
- K-means聚类算法MATLAB
以K-means算法为例,实现了如下功能 自动生成符合高斯分布的数据,函数名为gaussianSample.m 实现多次随机初始化聚类中心,以找到指定聚类数目的最优聚类.函数名myKmeans.m 自 ...