常态分布与游戏匹配

游戏匹配的胜率与两个选手之间的段位差成正态分布关系,并非高段位玩家能100%赢低段位玩家,在MMORPG(Multiplayer Online Role-PlayingGame),大型多人在线角色扮演游戏,像LOL(英雄联盟),农药(王者荣耀),乱斗西游, 梦三等 游戏中(守望先锋不是,它是FPS类)均适用。

一般段位分也叫Rank值,如下为等级量表----段位分区间尺度:


常态分布与游戏匹配_第1张图片
LOL段位换算分.PNG

我们可以使用一个正态分布函数来代表一名选手的波动表现,这是统计学上的概念。从这个函数里可以得出另一个函数叫“常态概率函数” ,这个就定义了根据比赛对抗结果可得出的等级差别,或者根据已知的等级差别可得出的预期比赛对抗结果。它是这样的:


用正态分布计算优胜概率.PNG

一般标准的正态分布函数是:


正态分布函数.png
#include 
#include 
double normalDistribution(double u)//正态分布随机数
{
      double num1,num2,num3,result;
      double s1,s2;

      s1=(1.0+rand())/(RAND_MAX+1.0);//随机数1
      s2=(1.0+rand())/(RAND_MAX+1.0);//随机数2

      num1=sqrt(-2*log(s2)/log(e));
      num2=2*pi*s1;

      num3=num1*cos(num2);
      x=u+num3*N;//u是均值,N是方差
      return x;
}
#include 
#include "mytest.h"
void main()
{

double result = normalDistribution(2.0);

printf("result\n", );

}

正态分布有两个参数,即期望(均数)μ和标准差σ,σ2为方差。
期望(均数)μ=0,标准差为σ的正态分布函数图如下:


常态分布与游戏匹配_第2张图片
标准正态分布图.jpg

P(D)这个值,就是以段位分差别D为自变量计算出来的预期取胜可能性(预期得分率),它可近似用下面这个公式来计算:


计算结果.png

比如选手A的段位分为2500分,B的段位分为1800分,那么D=700分;那么A是不是会虐到B连渣都不剩呢?答案是不一定的。代入上面那么近似计算公式,A的胜率就是:


常态分布与游戏匹配_第3张图片
计算结果.PNG

结果胜率为:98.25%,并非传说中的100%获胜;但是胜率已经算比较高了。

你可能感兴趣的:(常态分布与游戏匹配)