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(只作转载, 不代表本站和博主同意文中观点或证实文中信息)再比如,传说中的面向对象本该大显神威 ...
随机推荐
- Nginx之静态资源WEB服务
本篇主要记录学习Nginx的静态资源WEB服务的几种常见的功能记录学习 Nginx开发常用的命令 nginx -tc /etc/nginx/nginx.conf vim /etc/nginx/conf ...
- Java基础之MySQL数据库与JDBC
一.数据库 DBMS 数据库管理系统 是由多个程序构成的专门用来管理大量数据的计算机系统 Server 提供数据存储.检索.计算等服务的网络程序+系统服务 Notifier ...
- HDU 3450 Counting Sequences(线段树)
Counting Sequences Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/65536 K (Java/Other ...
- CH5E01 乌龟棋【线性DP】
5E01 乌龟棋 0x5E「动态规划」练习 描述 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物.乌龟棋的棋盘是一行N 个格子,每个格子上一个分数(非负整数).棋盘第1 格是唯一的起点,第N 格是终点 ...
- 回车(CR)换行(LF)的来历及区别
转自https://blog.csdn.net/lw370481/article/details/8229344 一.回车”(Carriage Return)和“换行”(Line Feed)起源 回车 ...
- HAPROXY简介
HAProxy 是一款高性能TCP/HTTP 反向代理负载均衡服务器,具有如下功能: 根据静态分配的cookies完成HTTP请求转发 在多个服务器间实现负载均衡,并且根据HTTP cookies 实 ...
- Put queue for MemoryTransaction of capacity 10000 full, consider committing more frequently, increasing capacity or increasing thread count flume capacity 时间数
package com.test; import org.apache.http.*;import org.apache.http.entity.ContentType;import org.apac ...
- vue系列
1.vue基础 2.vue请求和跨域 3.自定义全局组件 4.vue-router 5.Vuex
- linux下的时间管理概述
2017/6/21 时间这一概念在生活中至关重要,而在操作系统中也同样重要,其在系统中的功能绝不仅仅是给用户提供时间这么简单,内核的许多机制都依赖于时间子系统.但凡是要在某个精确的时间执行某个事件,必 ...
- 同步机制及windows同步函数的使用
最近面试的许多公司都询问关于多线程的问题,但是问的深度一般不会很难,仅仅问相关的同步问题以及对应的API函数,下面是windows下几个常用的同步方法,对于应付帮助或者一般的开发都非常有用 目录一 临 ...