游戲匹配的勝率與兩個選手之間的段位差成正態分布關系,并非高段位玩家能100%贏低段位玩家,在MMORPG(Multiplayer Online Role-PlayingGame),大型多人在線角色扮演游戲,像LOL(英雄聯盟),農藥(王者榮耀),亂斗西游, 夢三等 游戲中(守望先鋒不是,它是FPS類)均適用。
一般段位分也叫Rank值,如下為等級量表----段位分區間尺度:
LOL段位換算分.PNG
我們可以使用一個正態分布函數來代表一名選手的波動表現,這是統計學上的概念。從這個函數里可以得出另一個函數叫“常態概率函數” ,這個就定義了根據比賽對抗結果可得出的等級差別,或者根據已知的等級差別可得出的預期比賽對抗結果。它是這樣的:
用正態分布計算優勝概率.PNG
一般標準的正態分布函數是:
正態分布函數.png
#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,標準差為σ的正態分布函數圖如下:
標準正態分布圖.jpg
P(D)這個值,就是以段位分差別D為自變量計算出來的預期取勝可能性(預期得分率),它可近似用下面這個公式來計算:
計算結果.png
比如選手A的段位分為2500分,B的段位分為1800分,那么D=700分;那么A是不是會虐到B連渣都不剩呢?答案是不一定的。代入上面那么近似計算公式,A的勝率就是:
計算結果.PNG
結果勝率為:98.25%,并非傳說中的100%獲勝;但是勝率已經算比較高了。