取一定范围内随机小数 c_算伪随机概率中C值的快捷方法

目前计算伪随机概率C值的方法,一般是二分法。二分法是个非常讨厌的方法,因为虽然简单却麻烦,想算个稍微精确点的数,需要十分巨大的计算量。如果像高中时那样手动计算,真是要算到眼花。

本文给出了一个十分简单快捷的方法,来计算C值,无需编程,仅需一个excel表就行。

注:前面几段是本方法的理论依据证明,如果嫌字多,可以直接跳到"用Excel表算C值"那一部分开始看。不过如果你直接跳到那一段看,不一定能看懂,O(∩_∩)O哈哈~


伪随机概率简单介绍

我们拿dota白牛的被动晕来举例:17%概率重击。为什么不拿剑圣来举例?已经有人用剑圣算过了,我要是还用剑圣算,难免有借别人结论胡说八道的嫌疑。

白牛第1次重击的概率为c;

若白牛第1次未重击,则第2次重击概率为2c;

若白牛第2次未重击,则第3次重击概率为3c;

........

当nc≥1时,必定重击。

每次重击之后,下次攻击重击概率变为c。

算出重击次数的期望值=

所对应的c值,即可。

从上面可以看出:伪随机概率中说的“17%概率”并不是真的每下攻击的重击概率都是17%,而是一个不断增加的概率,满足重击次数期望值为


数列的方法算C值

根据上面介绍,于是我们有了常规计算思路:

白牛第1下 重击的概率=c

白牛第2下 重击的概率=2c

(1-c)

白牛第3下 重击的概率=3c

(1-c)
(1-2c)

.....

白牛第n下 重击的概率=nc

(1-c)
(1-2c)....[1-(n-1)c]

于是这个问题就转化为如下数列问题:

已知数列{

}的通项公式为
=
c
(1-c)
(1-2c)....[1-(n-1)c],求数列{
}的前n项和公式

我们算出

之后,根据方程组:
=
,n=[
]+1,可以算出c的值。(注:[ ]为向下取整符号)

不过可惜的是这个前n项和公式似乎无法算出。退一万步讲,就算可以算出,

=
也将是个高次方程,我们知道常规一元五次方程以上是没有根式解的。所以,我们想通过这种方法算出C的精确数值是不可能的。没办法,我们只能使用二分法了。

二分法算伪随机概率C值

=0.0001,那么:

白牛第1下就重击概率

=0.0001;

白牛第2下才重击概率

=0.0002
(1-0.0001);

白牛第3下才重击概率

=0.0003
(1-0.0001)
(1-0.0002)

....

此时重击次数期望值E=1

+2
+3
+....+10000
>

所以c>0.0001。

=0.15,重复上面步骤,可得此时E<

所以c<0.15

取c=(0.0001+0.15)/2=0.07505,重复上面步骤得此时E<

取c=(0.0001+0.07505)/2

重复上述步骤......直到E非常接近

时,这时的c值即为所求。

我就不算下去了,因为计算量太大了,总共可能要我算几百万个小数相乘啊,累!

接下来我介绍一个非常简便快捷的算C值的方法。


用EXCEL算C值

如下图:具体如何编辑Excel中各列单元格已经写在图中了。

我们改动F2单元格的数值,使得G2单元格接近17%,则F2单元格此时的数值即为C值。

例如:白牛的17%概率重击对应的C值就是0.04092

4f00b4f76a01a77deaea43ef245f0dda.png

解释一下这个表格的意思:

F2单元格:表示C值。

在这里手动输入C值,使得G2单元格的数值满足你的精确度需求时,就是我们想要算的那个C值。

G2单元格:表示F2单元格对应C值的面板暴击概率。

说的很拗口,举个例子,相当于dota里白牛的“17%”。

A列:记录次数。

A2单元格数值为1。

从A3单元格开始,如果A列上一单元格为0,则当前单元格也为0。

如果A列上一单元格不为0,并且A列上一单元格<1/c,那么当前单元格为上一单元格+1。

如果A列上一单元格不为0,并且A列上一单元格≥1/c,那么当前单元格为0 。

为什么这样?因为在伪随机概率下,当前次数暴击的概率=当前次数*C,当当前次数的暴击概率≥1时,必定暴击。因此若上单元格≥1/c,那就说明上一次的暴击概率≥1,已经必定暴击了。

B列:记录当前次数的实际暴击概率。

实际暴击概率=当前次数*C值

C列:记录当前次数不暴击的实际概率。

不暴击的实际概率=1-实际暴击的概率

D列:记录首次暴击发生在当前次数的概率。

首次暴击发生在当前次数的意思是:之前所有次数不暴击、而当前次数暴击。也就是前面一段"数列法算C值"中的


伪随机概率的特点

1、dota里说白牛的重击概率是17%,但是实际上白牛第1下打出重击的概率只有4%。

运气再怎么差的人,25下也必定会触发被动晕,不过这种情况非常少见,只有50亿分之一。

2、伪随机概率下,在5-6下左右第一次出重击的几率最大。上来就重击或者10多下才重击的概率较小,迁就了玩家的错误认知。(没办法纠正玩家的思维,只能迁就他们的思维了)

而自然概率下,第1下第一次出重击的概率最大,往后越来越小。

c5dbf39691e6d791c5480af42493211f.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值