常态分布与游戏匹配
2017-11-26 本文已影响77人
HaleyLiu
游戏匹配的胜率与两个选手之间的段位差成正态分布关系,并非高段位玩家能100%赢低段位玩家,在MMORPG(Multiplayer Online Role-PlayingGame),大型多人在线角色扮演游戏,像LOL(英雄联盟),农药(王者荣耀),乱斗西游, 梦三等 游戏中(守望先锋不是,它是FPS类)均适用。
一般段位分也叫Rank值,如下为等级量表----段位分区间尺度:
我们可以使用一个正态分布函数来代表一名选手的波动表现,这是统计学上的概念。从这个函数里可以得出另一个函数叫“常态概率函数” ,这个就定义了根据比赛对抗结果可得出的等级差别,或者根据已知的等级差别可得出的预期比赛对抗结果。它是这样的:
一般标准的正态分布函数是:

#include <stdio.h>
#include <math.h>
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 <stdio.h>
#include "mytest.h"
void main()
{
double result = normalDistribution(2.0);
printf("result\n", );
}
正态分布有两个参数,即期望(均数)μ和标准差σ,σ2为方差。
期望(均数)μ=0,标准差为σ的正态分布函数图如下:

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

比如选手A的段位分为2500分,B的段位分为1800分,那么D=700分;那么A是不是会虐到B连渣都不剩呢?答案是不一定的。代入上面那么近似计算公式,A的胜率就是:
结果胜率为:98.25%,并非传说中的100%获胜;但是胜率已经算比较高了。