目前计算伪随机概率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

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

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下第一次出重击的概率最大,往后越来越小。

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

  1. Matlab 产生伪随机调相信号与伪随机信号

    伪随机调相信号是由多个CW自脉冲构成,第i个子脉冲有下式表示为 式中只取0和两个值,由m序列(一种伪随机序列,具有周期性,其周期随着m阶数的提高而增大)来控制. matlab程序: clear; cl ...

  2. 伪随机算法c语言,伪随机算法实现各语言实现示例。

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 无聊,又研究了一下几种排序算法,在测速的时候,发现自己忘记了一个重要的问题,在某天看到有人在帖吧提到生成随机数只计数到32768就停止了,顺手查了一下C库 ...

  3. 取一定范围内随机小数 c_随机振动测试中的常见试验条件有哪些?

    从本质上说,随机振动试验模拟的其实不是单个自然现象,而是大量自然现象的一种集合.这些现象表明看似乎是杂乱的,但从总体上看仍有一定的统计规律.生活中典型的随机振动例子比如有车辆行进中的颠簸,飞机在飞行时 ...

  4. 【excel】根据单元格公式随机生成人名、及按概率生成不同值的测试数据

    目录 excel根据行号轮流选取不同的填充值 按概率选取填充值 随机生成18位数字(伪身份证号) 生成2到3字的随机人名 注意,在excel中应用公式时,单元格格式应设为常规. excel根据行号轮流 ...

  5. python取随机小数_python随机小数

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! nonceinteger是随机正整数,与 timestamp 联合起来,用于防止 ...

  6. python随机生成小数_python如何生成随机小数

    python中的random模块用于随机数 (1)随机小数#(1)随机小数 import random print(random.random()) #随机大于0 且小于1 之间的小数 ''' 0.9 ...

  7. 众妙之门玄之又玄,游戏系统中的伪随机(Pseudo-Randomization)和真随机(True-Randomization)算法实现Python3

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_212 有人说,如果一个人相信运气,那么他一定参透了人生.想象一下,如果你在某款moba游戏中,在装备平平,队友天坑的情况下,却刀刀 ...

  8. 伪随机函数 密码学_密码学与理论2:什么是伪随机

    伪随机函数 密码学 正如本系列第一部分所得出的结论,没有随机性的安全性是不可能的. 确定性密码无法抵御强大的攻击者, 真正的随机数生成器不切实际或难以获得,因此加密技术基于伪随机数生成器. 这篇文章的 ...

  9. java满天星随机变颜色_js实现随机div颜色位置 类似满天星效果

    本文实例为大家分享了js实现随机div颜色位置的具体代码,供大家参考,具体内容如下 效果如下: 代码如下: MTX function init(){ randomDiv();//初始的随机 } set ...

最新文章

  1. ssl 和 https
  2. 解决iscroll.js上拉下拉刷新手指划出屏幕页面无法回弹问题
  3. LayoutInflater中四种类型inflate方法的介绍
  4. html按键清空怎么写_html的空格代码怎么写?教你如何使用空格nbsp代码
  5. Oracle之表分区、分区索引(一)
  6. 奇葩说之RTC的那些事
  7. Oracle 之 用户与权限
  8. Zend Framework(一)概述介绍
  9. LeetCode(1046)——最后一块石头的重量(JavaScript)
  10. I学霸官方免费教程二十八:Java排序算法之选择排序和冒泡排序
  11. Spark 系列(十)—— Spark SQL 外部数据源
  12. 记录下我的Linux系统中vim文件的配置---(.vimrc文件配置模板)
  13. 孙鑫VC学习笔记:第四讲 MFC消息映射机制和CDC类的使用
  14. 构建Arduino和TFT LCD条形码扫描仪
  15. JavaWeb - 常用的HTTP请求头与响应头
  16. C#ObjectArx Cad添加图层
  17. Hive: Reflect UDF
  18. java espresso车架_Espresso 学习
  19. BufferedRead
  20. vue scoped html样式无效

热门文章

  1. 编辑神器Vi介绍及常用命令
  2. 数据库开发设计规范及表结构设计原则
  3. android 打开移动开关,教你一个让安卓手机运行更流畅的小技巧:打开这个开关即可...
  4. python中object是什么数据类型_自学Python2.1-基本数据类型-字符串str(object) 上
  5. 论文浅尝 | Knowledge Vault: 全网规模的知识概率融合方法
  6. 领域应用 | 从数据到智慧,知识图谱如何推动金融更智能?
  7. 会议 | 2018年全国知识图谱与语义计算大会(CCKS 2018)
  8. MYSQL返回指定时间间隔函数DATE_SUB和TO_DAYS详解
  9. 【Poj1017】Packets
  10. java乱码问题总结