暴击保底概率机制研究

暴击保底概率机制研究

问题假设单次暴击基础概率是0.2,每次暴击触发概率独立,但是假如连续4次都没有触发暴击那么第五次必定触发暴击。那么这种情况下对于全体事件而言暴击事件触发概率是多少?

通过模拟可以知道概率大概在0.29左右(随机种子更新的随机函数应该能看做独立的概率吧),然后我们把触发的情况完整的列出来:

对于每次触发暴击的概率分别为0.2,0.16,0.128,0.1024,0.4096,假设发生10000次暴击总事件次数为33616次,概率约为0.2975也就是可以显示为0.3。

其中最主要的就是把暴击作为独立的随机事件来看待,之后再统计所有事件发生的总量的数量。这样算出来的结果就和直接拿rand模拟的差不多了。

反推概率的话这种办法受到第几次暴击的影响其实就是对于次数的固定概率,但是其中还有预先加入的概率p作为另外的自变量,所以递推之后反推可能比较好或者采用逼近的方法先决定第几次再计算合适的p的值。P(N)是实际概率,p是预设的基础概率,在下面的PRD中指的是暴击概率增量。

//瞎写的代码
#include<stdio.h>
#include<stdlib.h>
#include <iostream>
#include <time.h> 
#include<math.h>
using namespace std;
int main()
{
    int m;
    double p=0;
    cin>>m>>p;//输入第几次必定暴击和暴击率 
    cout<<m<<p;
    int t=0;
    int num=0;
    double x;
    int test=100000;
    int test_num=100;
    int ii=0;
    while (ii<test_num){	
    //srand((unsigned)time(NULL)); 
    srand(ii);
    for(int i = 0; i < test;i++ ){
        if (t==m-1) {
            num++;
            t=0;
        }else{
            x=rand() / double(RAND_MAX);
            //cout<<x<<"\n";
       		if (x<=p){
       		t=0;
       		num++;
       		}else{
       		t++;
       		}
        }
    } 
    cout<<double(double(num)/double(test))<<"\n";
    ii++;
    num=0;
    t=0;
    }
    //直接计算 
    double q=0;
    for(int i = 1; i <= m-1;i++ ){
        q+=i*p*pow((1-p),(i-1));
    }
    q+=m*pow((1-p),m-1);
    cout<<"ans:"<<1/q;
}

 

 

其实比起这种办法在大多数时候PRD暴击算法会更加为人所知。

PRD暴击算法

P(N) = p * N

解释一下就是p是暴击的增量,N是未触发暴击的次数,当触发暴击之后N被重置为1。假设p=0.3,也可以用上面的算法算出实际的单次概率,毕竟当n=4时P(N)=1.2>1相当于也是必定触发的情况。

对于随机事件暴击触发而言,存在4种可能,就是a一次到a四次出暴击的情况,概率分别是0.3,0.42,0.252,0.28,假设产生1000次暴击,总事件次数为2008次,

也就是实际概率差不多0.5左右,当显示给玩家的暴击率为0.5的时候,差不多p就为0.3。

这种方法反推的话就需要数列的知识了,然鹅我感觉已经差不多忘完了,所以就写个思路。递推正算还是比较简单的,关键在于对下面的式子的拆解。

其中p的这个数列感觉拆出来也不好解,下面引用的文章中使用的二分法预处理我感觉也够用。就是通过二分法去逼近这个小p的估计值,差不多其实玩家也就感觉不出来概率的细微差别了。当然有办法直接算是最好,晚点找大佬问一问。

今天做作业的时候水群看到了一个之前没关注到的问题,关于有一些游戏中存在的暴击保底机制的单次概率研究。一开始也没啥想法用c++瞎写了个模拟之后找到了一些规律。

其实相比较这两种办法,我觉得递增概率也就是PRD分布集中在中间,更加稳定。而前面的那个方法除非保底次数特别多,不然的话会出现明显集中在最后一次保底暴击的趋势。至于通过最终概率来反推中间概率的部分我还没想好,先挖个坑。

PRD暴击算法参考:https://zhuanlan.zhihu.com/p/214154376