代码展示

# _*_ coding: utf-8 _*_
# @Author : ******
# @Time   : 2022/8/27 14:47
# @File   : ProbabilisticCompensation.py
# @Project: TestCase
import numpy as npclass PC:"""状态图如下(这里无法插入图片,也只能通过文字描述了):上次暴击:P上次非暴击:1-P上次暴击,本次暴击:P1上次暴击,本次非暴击:1 - P1上次非暴击,本次暴击:P2上次非暴击,本次非暴击:1 - P2为了使得整体的暴击概率不发生变化,则有如下约束:P*P1 + (1-P)*P2 = P存在2种设定:A.P<=0.5时,上次暴击后,则本次暴击率下降50%P1 = P - P / 2通过约束条件可以求得P2B.P>0.5时,上次非暴击后,则本次暴击率增加初始非暴击概率的50%P2 = P + (1 - P) / 2通过约束条件可以求得P1"""def __init__(self, p):# 初始概率self.p = p# 概率补偿self.p1, self.p2 = self.get_compensate()# 初始矩阵self.init_vector = np.matrix([[self.p, (1 - self.p)]])# 概率转移矩阵self.matrix = np.matrix([[self.p1, (1 - self.p1)],[self.p2, (1 - self.p2)]])def get_compensate(self):"""根据设定的概率求得概率补偿:param p:触发事件的概率:return:概率补偿 tuple"""if self.p > 0.5:p1 = 1 - (1 - self.p**2) / (2 * self.p)p2 = self.p + (1 - self.p) / 2else:p1 = self.p - self.p / 2p2 = self.p * (1 - self.p / 2) / (1 - self.p)return p1, p2def show(self):print(f"当前概率: {self.p}")print(f"概率补偿: {self.p1, self.p2}")print(f"即:    触发事件后概率降低至{self.p1},反之,概率增加至{self.p2}")print("------------------------------------------")def check(self, count):"""校验每次操作的暴击率是否都与初始的保持一致:param count:统计次数:return:None"""# 获得初始矩阵vector = self.init_vector# 完成50次操作for i in range(1, count + 1):# 求得概率转移后新的概率矩阵vector = vector * self.matrixprint(f"第{str(i).zfill(3)}轮: [ 暴击: {vector[0,0]}, 反之: {vector[0,1]} ]")if __name__ == '__main__':prob = 5while prob <= 100:pc = PC(prob / 100)pc.show()prob += 5

日志输出

D:\software_install\Python\Python39\python.exe D:/projects/project-python/TestCase/game_prob/group_two/ProbabilisticCompensation.py
当前概率: 0.05
概率补偿: (0.025, 0.05131578947368422)
即:    触发事件后概率降低至0.025,反之,概率增加至0.05131578947368422
------------------------------------------
当前概率: 0.1
概率补偿: (0.05, 0.10555555555555556)
即:    触发事件后概率降低至0.05,反之,概率增加至0.10555555555555556
------------------------------------------
当前概率: 0.15
概率补偿: (0.075, 0.1632352941176471)
即:    触发事件后概率降低至0.075,反之,概率增加至0.1632352941176471
------------------------------------------
当前概率: 0.2
概率补偿: (0.1, 0.225)
即:    触发事件后概率降低至0.1,反之,概率增加至0.225
------------------------------------------
当前概率: 0.25
概率补偿: (0.125, 0.2916666666666667)
即:    触发事件后概率降低至0.125,反之,概率增加至0.2916666666666667
------------------------------------------
当前概率: 0.3
概率补偿: (0.15, 0.3642857142857143)
即:    触发事件后概率降低至0.15,反之,概率增加至0.3642857142857143
------------------------------------------
当前概率: 0.35
概率补偿: (0.175, 0.44423076923076915)
即:    触发事件后概率降低至0.175,反之,概率增加至0.44423076923076915
------------------------------------------
当前概率: 0.4
概率补偿: (0.2, 0.5333333333333334)
即:    触发事件后概率降低至0.2,反之,概率增加至0.5333333333333334
------------------------------------------
当前概率: 0.45
概率补偿: (0.225, 0.634090909090909)
即:    触发事件后概率降低至0.225,反之,概率增加至0.634090909090909
------------------------------------------
当前概率: 0.5
概率补偿: (0.25, 0.75)
即:    触发事件后概率降低至0.25,反之,概率增加至0.75
------------------------------------------
当前概率: 0.55
概率补偿: (0.36590909090909096, 0.775)
即:    触发事件后概率降低至0.36590909090909096,反之,概率增加至0.775
------------------------------------------
当前概率: 0.6
概率补偿: (0.4666666666666667, 0.8)
即:    触发事件后概率降低至0.4666666666666667,反之,概率增加至0.8
------------------------------------------
当前概率: 0.65
概率补偿: (0.5557692307692308, 0.825)
即:    触发事件后概率降低至0.5557692307692308,反之,概率增加至0.825
------------------------------------------
当前概率: 0.7
概率补偿: (0.6357142857142857, 0.85)
即:    触发事件后概率降低至0.6357142857142857,反之,概率增加至0.85
------------------------------------------
当前概率: 0.75
概率补偿: (0.7083333333333333, 0.875)
即:    触发事件后概率降低至0.7083333333333333,反之,概率增加至0.875
------------------------------------------
当前概率: 0.8
概率补偿: (0.7750000000000001, 0.9)
即:    触发事件后概率降低至0.7750000000000001,反之,概率增加至0.9
------------------------------------------
当前概率: 0.85
概率补偿: (0.8367647058823529, 0.925)
即:    触发事件后概率降低至0.8367647058823529,反之,概率增加至0.925
------------------------------------------
当前概率: 0.9
概率补偿: (0.8944444444444445, 0.95)
即:    触发事件后概率降低至0.8944444444444445,反之,概率增加至0.95
------------------------------------------
当前概率: 0.95
概率补偿: (0.9486842105263158, 0.975)
即:    触发事件后概率降低至0.9486842105263158,反之,概率增加至0.975
------------------------------------------
当前概率: 1.0
概率补偿: (1.0, 1.0)
即:    触发事件后概率降低至1.0,反之,概率增加至1.0
------------------------------------------Process finished with exit code 0

上面展示的是概率每增加0.05时,其对应的概率补偿值(P1,P2)

Python游戏概率补偿算法-马尔科夫链相关推荐

  1. 用Python中的马尔科夫链进行营销渠道归因

    用Python中的马尔科夫链进行营销渠道归因 --第一部分:"更简单 "的方法 任何积极开展营销活动的企业都应该对确定哪些营销渠道推动了实际转化率感兴趣.投资回报率(ROI)是一个 ...

  2. 蒙特卡罗 马尔科夫链 与Gibbs采样

    这几个概念看了挺多遍都还是含混不清,最近看了几篇博客,才算大致理解了一点点皮毛,所以来总结一下. MCMC概述 从名字我们可以看出,MCMC由两个MC组成,即蒙特卡罗方法(Monte Carlo Si ...

  3. MCMC(一):蒙特卡罗方法和马尔科夫链

    作为一种随机采样方法,马尔科夫链蒙特卡罗(Markov Chain Monte Carlo,以下简称MCMC)在机器学习,深度学习以及自然语言处理等领域都有广泛的应用,是很多复杂算法求解的基础.比如分 ...

  4. MCMC(二)马尔科夫链

    在MCMC(一)蒙特卡罗方法中,我们讲到了如何用蒙特卡罗方法来随机模拟求解一些复杂的连续积分或者离散求和的方法,但是这个方法需要得到对应的概率分布的样本集,而想得到这样的样本集很困难.因此我们需要本篇 ...

  5. 清晰易懂的马尔科夫链原理介绍

    马尔科夫链是一种非常常见且相对简单的统计随机过程,从文本生成到金融建模,它们在许多不同领域都得到了应用.马尔科夫链在概念上非常直观且易于实现,因为它们不需要使用任何高级的数学概念,是一种概率建模和数据 ...

  6. 马尔科夫链原理介绍【通俗易懂】

    介绍 马尔科夫链是一种非常常见且相对简单的统计随机过程,从文本生成到金融建模,它们在许多不同领域都得到了应用.马尔科夫链在概念上非常直观且易于实现,因为它们不需要使用任何高级的数学概念,是一种概率建模 ...

  7. 马尔科夫链与MCMC方法

    马尔科夫链概述 基本思想: 过去所有的信息都已经被保存到了现在的状态,基于现在就可以预测未来. Example: 假如每天的天气是一个状态的话,那今天是不是晴天只依赖于昨天的天气,而和前天的天气没有任 ...

  8. MCMC学习笔记-马尔科夫链概述

    参考文章:MCMC(二)马尔科夫链 - 刘建平Pinard - 博客园 写给小白看的马尔科夫链(Markov Chain)最佳入门教程_许进进的博客-CSDN博客_markov链 目录 1.马尔科夫链 ...

  9. 通过Python实现马尔科夫链蒙特卡罗方法的入门级应用

    通过把马尔科夫链蒙特卡罗(MCMC)应用于一个具体问题,本文介绍了 Python 中 MCMC 的入门级应用. GitHub 地址:https://github.com/WillKoehrsen/ai ...

最新文章

  1. KD-Tree复习笔记(BZOJ1941 BZOJ2648 BZOJ4066)
  2. LVM逻辑卷容量的增减
  3. Nodejs开源项目推荐
  4. Linux SPI总线设备驱动模型详解
  5. 论文笔记——Rich feature hierarchies for accurate object detection and semantic segmentation
  6. 【机器学习】5行代码在小数据集上涨点
  7. Flink流计算WordCount代码示例
  8. Google Go Programming In Eclipse
  9. Android中打包含有Activity以及资源文件的jar包在工程中调用
  10. 51Nod 1494 选举拉票(权值线段树)
  11. input子系统分析一
  12. 我朋友坚持只肯以银行卡转账的方式还我钱是为什么
  13. C#实现动态桌面背景图片切换(续)
  14. 汉文博士 0.5.7.2356 版发布
  15. DG - 开启Active Data Guard
  16. 【linux】如何查看和解压缩rpm文件内容
  17. live2d_明日方舟:聊聊可露希尔的live2d以及live2d制作
  18. Tableau开始试用期后的破解方法
  19. TFTPD32, 3CDaemon, FlashFxp
  20. 旧视频调整为4k视频提高分辨率Topaz Video Enhance AI

热门文章

  1. qt保存文件的默认路径_Qt将文件保存到指定目录下(另存为的功能)
  2. 「文献解读」利用基因沉默和过表达技术研究棉花的基因功能
  3. Windows10中Edge浏览器突然出现“无法访问该页面”问题的解决方案
  4. android+农历月份大小压缩表,部分日期农历新历转换会崩溃
  5. 高数:微分中值定理介值定理证明题浅析
  6. HAZOP到LOPA和SIL验算软件-歌略RiskCloud
  7. 朋友,别再干巴巴地“陈述”简历了,10条写作的技巧分享给你
  8. SketchUp: Modeling Interiors from Photos SketchUp:从照片建模室内设计 Lynda课程中文字幕
  9. 苹果8a1660是什么版本_苹果A1660是什么型号?
  10. 航拍“中国南北地理分界线” 感受独特景观