问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

编程游戏开发中,概率机制可参考 PRD公式

创作时间:
作者:
@小白创作中心

编程游戏开发中,概率机制可参考 PRD公式

引用
CSDN
1.
https://blog.csdn.net/sinat_26987533/article/details/103629953

说到概率,有一个特别经典的问题:存在三个盒子,其中一个盒子中存放着大奖。现在你随机挑选了其中一个,中奖的概率是1/3。接着主持人打开了剩下2个盒子中的一个,没有中奖。问给你一次重选择的机会,你会怎么做?维持原来的选择 or 放弃原来的选择。

随机

随机是我们进行概率推导的基石之一。我们的统计学中经常说一枚硬币抛正面的概率是50%,就是基于每次抛硬币都是随机事件。

真随机

在真随机中,每一个事件都是相互独立、服从真随机分布的,不受其他事件的发生而改变。例如,每次手术的成功率都应该是1%,这种相互独立的,不受其他事件的发生而影响,才是真随机。

伪随机

我们程序员都知道,程序给定条件,得到的是确定的结果。所以我们编写的Math.random()肯定不是真随机,而是伪随机。代码底下无秘密,我们看下自带random函数的随机数产生的逻辑。


图1 random函数计算源码

可以看出,如果给定相同的seed,random方法将返回相同的随机数。所以程序只是在生成近似随机结果。

洗牌算法

各大音乐播放器中的“随机播放”之中。在随机播放时,如果采用真随机,会导致一首歌无论如何都播放不出,或是同一首歌连续播放数次。为了解决这个问题,播放器采用的解决方案即是洗牌算法:将一个包含所有歌曲的数组像洗牌一样打乱,然后依次播放这个乱序数组。

在游戏中,会有概率暴击的设计。比如某个角色的大招有35%的概率使出暴击,按照真随机,那么连续暴击的概率 0.35X0.35=12.25%。

过高的暴击概率对严谨的竞技赛事来说,无疑是极其不公平的。因为一次人品爆发秒掉对方核心,可能直接决定赛事的成败,而缺少了竞技的成分。

因此游戏公司大都遵循 PRD机制PRD公式如下:


图2 PRD公式

其中,C是一个小于1的常数(算法复杂,可以查表),N表示尝试次数,P为概率。公式表明的意义是:从事件发生起,每次不成功的尝试都会增加1个固定值。 当触发暴击后,概率N重新计算。


图3 预先算好的C值表

从表中,可以查到35%概率,使用的C约为16%,因此可以算的p(7)=16x7%=112%, 即7次必出现1次暴击。同时上来即两次暴击的概率为 0.16x0.16 = 2.56%,大大降低了人品的干预。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号