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(只作转载, 不代表本站和博主同意文中观点或证实文中信息)再比如,传说中的面向对象本该大显神威 ...
随机推荐
- 160606、springmvc中使用Spring Mobile
springmobile特点: 1.客户端设备识别:识别结果只有3种类型:NORMAL(非手机设备).MOBILE(手机设备).TABLET(平板电脑). 2.网站偏好设置:Spring 通过设备识别 ...
- react-native 学习(一)
本包子很久没更新过博客啊... 学习react-native 可以从官网上去学习.但是 目前我看到的中文网和英文网他们初始构建的项目的命令行是不同的. 在中文网上,构建项目的 react-native ...
- wordcount(C语言)
写在前面 上传的作业代码与测试代码放在GitHub上了 https://github.com/IHHHH/gitforwork 本次作业用的是C语言来完成,因为个人能力与时间关系,只完成了基本功能,扩 ...
- JavaWeb—Session与Cookie
概念 会话:指从一个浏览器窗口打开到关闭期间的一系列动作(可简单理解为用户开一个浏览器,点击多个链接,访问服务器多个web资源,然后关闭浏览器). HTTP协议是无状态协议:每次连接(比如同一个网站的 ...
- su 与 su - 区别
su与su -都是用来切换用户的命令,简单说它们之间的区别就是:su -切换的干净彻底,而su 切换用户却拖泥带水. su su username,切换到指定用户,但是当前目录不会变化,环境变量还是上 ...
- Linux的日志管理
Linux日志的管理 日志:记录了你几乎所有的操作记录,用于系统的审核,故障的排除.日志文件永久存放在日志目录中,系统日志保存在/var/log中 rsyslog 按照日志类型分类,把所有日志记录到/ ...
- Linux界面交互与目录结构
一.交互通道 Linux系统环境默认有六个命令交互通道和一个图形界面交互通道,默认进入的是图形界面通道. 命令交互模式切换:ctrl+alt+F1-F6 图形界面交互模式:ctrl+alt+F7 ...
- 64位win2003/win2008系统IIS6.0/7.5配置PHP的方法
64位win2003/win2008系统IIS6.0/7.5配置PHP的方法 32位的win2003系统配置PHP,估计很多人都已经驾轻就熟了,不过当遇到64位的系统时,估计又会遇上新的问题了.本文记 ...
- 145. Binary Tree Postorder Traversal(二叉树后序遍历)
Given a binary tree, return the postorder traversal of its nodes' values. For example:Given binary t ...
- Gentoo64无法启动eth0的问题
Gentoo64在net文件中配置好eth0的静态IP 代码 1.2: /etc/conf.d/net文件的一个示例 # DHCP config_eth0=( "dhcp" ) # ...