标签: 计算

Excel 计算缺陷与大数计算

Excel 很多时候可以当作一个简易的数学计算程序,代替 Mathematica 或者 Matlab 之类的专业软件进行一些不算太复杂的数值运算。但 Excel 的数据处理存在很多弱项,在遇到时需要相应作一些处理。

问题一:有效位数大约只有 15-16 位,更多的位数只会用 0 填充了。

1

精确计算的 2n 的尾数不会是 0,始终是 2→4→8→6→2…… 的循环,但从截图上可以看到,Excel 在计算 250 时,就遇到了有效位数问题,使得末尾出现了数字0。

关于问题一的应对:

从例子中可以看到,Excel 提供了 15 位的精度,这意味在在『千万亿』这个级别上 Excel 依然可以进行精确的计算。相当于以小数点后 4 位精度,即 0.0001 元 = 0.01 分 的精度下,处理九千亿人民币以下的财务数据。处理全国 GDP 的数据也可以精确到分,以米为精度可以让光跑一个月,以毫秒为精度覆盖三万多年。

但是如果你真觉得不够,就需要自己用公式实现进位,使用多个单元格作为『数字段』,来确保每个单元格内的数字长度不超过 15 位。

以 2为例,其计算由两部分组成:

最右一列公式为:

其中,Right 函数保证每个单元格只取结果的最右 12 位,让精度始终符合 15 位上限的要求。而 Text() 函数则保证当截取 12 位数字时,不会将原来在中间位置的 0 因为截取而成为首位 0 消失掉。例如,263 =  461,1686,0092,1369,3952,当截取 12 位时,会获得0092,1369,3952,如果不通过 Text() 函数保存首位的 0,则最后合并回去时就会产生错误。

左边每一列的公式均为:

这个公式同时适用于左边任意多列,使得只要电脑性能过关,尽可用尽 Excel  的所有列(一共 16384 列)。

公式略复杂,以 Y2 为例:

最外层 Text() 依然是为了保留首位 0。Value(Left()) 用于提取右边列的进位数字,即当前列的右侧列如果出现超过 12 位的数字时,则截取头部进到本列。Iferror() 用于检测是否进位。将进位数字和本列上一行数据乘二的结果相加后,再检测是否本列也多于 12 位,如果多则截取。公式引用关系如下:

I9N46D5M6%U}E@8IXWXS8CU

使用类似思想,可以精确进行一次数值变化不超过 1014 的大部分大数计算。需要注意的是,假如一次数值变化较大,则每单元格所能保留的位数就相应变小,不一定是 12 位了。

应对问题一的要点有二, 一是自行实行截取与进位,二是利用 Text() 公式特性,保留截断后的首位 0 不丢失。我通常把这种处理办法称为『大数多列化处理』。

 

 

问题二:数值上限大约在 21024-1,由于有效位数限制,实际上限更小一点,大约在 21023+21022+……+2971 ≈ 1.7977e308 左右。

2

这与问题一不同点在于,这个问题不关注精确展开,而更关注公式计算过程中的上限值。当然,使用问题一中的办法也能解决本问题中的部分情况,但对于更大的数字,例如用尽 Excel 所有列(16384列)也写不下的数字,大约 1016384*14 = 10229376,问题一中精确展开的解法就无能为力了。况且在实际展开中,在装满 Excel 前就早早会遇到内存和 CPU 瓶颈了。问题二的解法注重于在有限的计算资源下计算尽可能大的数字。

我们以计算 361 的阶乘为例,如果使用 Excel 公式直接输入 =Fact(361) 则只会得到一个 #NUM! 的结果。意即该计算的值或者计算过程中已经出现了超过 Excel 单元格所能容纳的最大值。

关于问题二的应对:

我们在 Excel 中准备三列数字,A 列为从 1-361 的展开。C1 公式为 =FLOOR.MATH(LOG10(A1)),B1 公式为 =A1/10^C1。

从 C2 起公式为:

从 B2 起公式为:

于是形成如下形式:

1~P8Q1T0%@[@S4J1CS4Y`U9

即 B C 两列形成了类似科学计数法的 b × 10 c 的数列。但不同之处在于,C 列的所有值全部相加,才是整个计算过程的最终解,如图:

EXWL~KE6X(5_2I4BLEN}%E5

即:361! = B361 × 10 SUM(C1:C361) = 1.43792325888489 × 10768,和上一篇博客对照一下,结果还是很精确的。

仔细观察 B、C 两列数值,其实原理就是每当一个新的 A 乘进来,都对结果作一次科学计数法处理,形成 b × 10 c 结构,确保每一次都有 1<b<10,然后把乘方 c 扔在一边最后再相加。

这一解法的关键在于在计算的每一步都即时处理,避免单元格数字过大而『爆掉』。通过这种方法,Excel 的可计算数域范围从大约 10308 变大到了大约 101,0000,0000,0000,0000,更大的数字则会产生 10 ~1000 倍甚至更大的误差。但如果对 C 列的数字再作问题一解法中的多列化处理,则可计算数上限大约会变成 1010229348 ,这里被迫用了幂的幂。这个数字相当大,并且实际不可能用到。早在这个极限之前,你的电脑内存估计就会挂掉。

 

 

当然,因为有 VBA,Excel 理论上也可以做复杂大数字计算,但考虑到学习成本和应用场景,不如学习 Mathematica 来得方便了。一般使用 Excel 做计算,都仅限于操作单元格和自带公式可以解决的问题。

……数零与进位

最近 AlphaGo 与李世石的人机围棋大赛很火,也蹦出一大波跳梁小丑。你会发现什么热点事件都少不了这种人,总是挡在路上,想不看都不行,比如那个输入法王。我记得上次 SoloLens 它也跳出来大谈 Matrix 来着。

牢骚完毕,这次深夜短篇不是写围棋也不是写计算机的,只说数数,更严格的说,只是数『0』。比如:

围棋棋盘共有 19×19 个点,每个点有『无子』、『黑子』、『白子』三种可能性。不考虑无气提子等特殊情况,则一共有 3^361 种盘面。如果考虑到下子进程,则有 361! 种棋谱。

因为有围棋规则在,实际数字会小一些,但这不是本文重点。这两个数字分别是一个 173 位数和一个 769 位数:

我故意设置了不换行,这样大概能直观地体会这个数字有多大了。(左上角的控制键切换换行与展开)

呼应本文标题的问题来了——这两个数字末尾各有多少个『0』?

你当然可以靠眼力劲儿去数,前者容易看出末尾没有 0,后者大概费些功夫能数出有 88 个 0。当然你也可以使用查找替换,数起来方便些。

但是如果没有事先把总数算出来,又如何数出一个数的末尾有多少个 0 呢?毕竟连乘 300 多次算个 700 多位的数字恐怕是更累的一件事情。能少算就少算点吧。

 

办法是有的,数质因素 5 就可以了。

要注意到,无论多少个数连乘,只有 2×5 才会在末尾添加一个 0。有人说 8×5 也会出 0,4×25 会出两个 0。但 8×5=40=22x2x5,有两个 2 其实浪费掉了。而 4×25 = (2×5)2,本质上正好是两对 2×5 相乘,完全符合之前的设定。又因为在阶乘中,2 作为质因数的出现次数远远超过质因数 5 出的次数。每个偶数都能至少贡献一个质因素 2,而每个 5 个数字才能贡献一或若干个质因数 5。因此可得结论:

只要数清连乘中一共有多少个质因数 5,就知道最终数字末尾有多少个 0 了。

对于 3^361,显然一个质因数 5 都没有。所以末尾没有 0。

对于 361!,

  • 每隔 5 个数字,可以提供一个 5。即 5, 10, 15, 20, 25, 30, ……, 360。一共 361 / 5 向下取整,有 72 个。
  • 每隔 25 个数字,可以一次提供两个 5。即 25, 50, 75, ……。一共 361 / 25 向下取整,有 14 个。由于上一条已经重复计算一次,因此这里的 14 不必再翻倍了。
  • 每隔 125 个数字,可以一次提供三个 5。即 125, 250。一共 361 / 125 向下取整,有 2 个。由于上一条已经重复计算一次,因此这里的 2 不必再翻倍了。

再上去是 625,直接超了。于是数 5 活动就此停止。

一共有 72+14+2=88,而 2 的数量肯定是足够的,于是会产生 88 组 2×5,即末尾有 88 个『0』。

这个方法可以广泛用于各类无聊的数 0 活动中,例如:

任取一个足够大的数字 N,比如 10100 即 1 googol,把小于 N 的所有素数乘起来,那么多素数的乘积的末尾有几个 0?

——答案是只有一个 0,算对了么?

 

那么第二个问题来了,为什么数 5 知 0?

答案是,这个和 10 进制有关。

仔细思考,『进制』的本义就是每满多少就 归 0 进位。换句话说,如果 要让末尾为 0,就必须不多不少,最末尾那些余量恰恰等于当前进制。这个 『余量』不是严谨的用词,意会即可。在 10 进制里,你总要正好凑出 10 个或者 10 的倍数个,才能让末尾是 0。在 8 进制里就要凑 8 的倍数个让末尾是 0。16 进制凑 16,N 进制凑 N。

所以归根结底,要让若干个数连乘得到末尾零,就是看能凑出几份当前进制。10 进制就是要凑 2×5,8 进制要凑 2x2x2,每三份质因数 2 会多一位尾 0,只看 2,别的都没用。

既然 10 进制下,10 的唯一质因数分解就是 2×5,而 2 又远多于 5,所以数 5 知 0 就变成了最简单的办法。

理解了这些,下面这些问题也不难回答了:

3361在 3 进制下,末尾有几个 0?

答案是 361 个 0。这个问题等效于 10 进制下 10361末尾有几个 0,等效于 N 进制下 N361末尾有几个 0。——都是361个。

21024在 16 进制下,末尾有几个 0?

答案是 256 个。因为 16 = 24,1024 / 4 = 256。

最后一个问题:

31024在 2 进制下,末尾有几个 0?

 

星际争霸 2 攻防数值研究

星际争霸里的数值平衡是挺有意思,值得仔细咀嚼的东西。

预备知识:虽然星际显示的所有数值都是整数,但在内部则使用了更精确的小数计算形式。而只在结果上进行了向上/向下取整处理。在不同场景下,这个计算特性也造成了一些数据结果的特性。比如:

  • 虫族的满血单位在受攻击后会立刻回一点血。
  • 取消建造返回 75% 资源但永远是整数。
  • 人类维修在一矿一气内是先扣款再维修。
  • 一次攻击最低造成 0.5 伤害。

等等……

攻击力,护甲值,血量

对于战斗中的任意一次攻击行为,都是通过以上三项得到最后的伤害计算结果,计算公式为:

伤害 = max { 攻击力 – 护甲值, 0.5 }

直观的公式,攻击力被护甲抵消掉一部分,剩下的对单位造成实际的伤害。

  • 人类枪兵默认 6 点伤害;
  • 人类地堡,默认 1 点护甲;

则每枪对地堡造成 5 点伤害。

当护甲值大于等于攻击力时,每次攻击至少造成 0.5 点伤害。

  • SCV 攻击力 5;(战五渣=。=)
  • 行星要塞,升级建筑护甲,护甲值 5。

结果:SCV 每次攻击造成 0.5 伤害,由于显示数值均为向上取整的整数,所以实际上需要两次攻击以后才能看见 HP -1。

虫族被动回血与向上取整

虫族的所有单位均有一个持续的回血速率,为 0.27 血/秒。个别兵种,例如飞龙,或者埋地蟑螂,会有更高的回血速率。这一回血不受任何外界因素影响,也与是否战斗无关,永不停止,直到满血。

星际的血量计算是存在小数数值的,包括伤害下限的 0.5 血,包括虫族回血的 0.27/秒。但这属于内部数据,对外展示出来的最终结果,依然是整数。从真实的小数值到实际呈现的整数值,中间的取数办法是向上取整。也就是说,在任何情况下,只要血量真实值存在小数点,则显示数值均向上取一位。

例如虫族所有单位均有 0.27 血/秒的回血速率(部分特殊兵种更高)。那么任何一个虫族兵种被攻击一次以后,只要不死,则会立刻启动回血过程,在小于半秒的时间内回复了 0.1 的血,在最终数值显示上便回了一点血。这也是那些初级数值研究文章里常说的,虫族在被攻击一次以后会回复一点血的原因。其真实原因如下:

  • 虫族单位的回血是任何时候只要小于满血量便永远存在的;
  • 虫族单位被攻击后进入不满血状态,该回血启动,回复 0.1 甚至更少的值;
  • 系统显示数值是向上取整而非四舍五入;
  • 故显示上是瞬间回 1 血;

某些人认为的“1 点隐藏护甲”,则是完全完全错误的。尝试:

  • 零攻攻城坦克:攻城模式 35 点攻击力,重甲 +15;
  • 零防跳虫:35 血,0 护甲值,轻甲;
  • 一防跳虫:35 血,1 护甲值,轻甲;

零防跳虫就是一炮死。因为来不及回血,也不存在什么隐藏护甲值。但是如果虫族升了一防,则坦克一炮轰上以后跳虫会有两格血,事实上是 35-1 = 34 点伤害,剩余 1 血,同时虫族回血机制启动,极短时间回复 0.1 血(每秒是 0.27,开始回血时还不到 1 秒,几乎瞬间),由于数值向上取整,我们就会见到回复了 2 滴血。再尝试:

  • 一攻女妖:13×2 攻击力;
  • 三攻机枪兵:9 点攻击力
  • 零防跳虫:35 血,0 护甲值;

则零防跳虫在经受了女妖和机枪兵的一轮攻击后,正好还剩下一点血。本来伤害量是正好 35 点的,但由于女妖和枪兵无法做到完全同时产生伤害,使得跳虫有短暂的时间回复零点几的血,从而在第一轮攻击中幸存下来。需要机枪兵额外一次攻击才能杀死。从这些数值可以明显地看出,虫族的 “第一次受攻击秒回一血” 只是一个结果,并不是原因,而 “隐藏护甲” 则简直是瞎扯。另外,虽然从结果上看 “受到攻击后立刻回 1 血” 有时候也正确,但由此衍生出来的什么 “回 1 血隐藏 CD” 也是错误的,单纯只是持续回血过程中是否正好巧合地遇上整数断点罢了。

由于正常情况下伤害值都是整数,故虫族的小数点血量在实际效用上确实等同于整数 1 血。虽然真实血量是个斜线,但效用血量却是阶梯横线。

非零攻异龙的弹射攻击是星际中唯一的小数点攻击力数值,腐化者的腐化技能可能产生大量的小数点伤害数值。奇葩都出在虫族。

攻防升级

每个种族都有针对绝大部分单位的攻防升级科技,可升级三次。攻防升级对已经在战场上的单位同样有效,因此可以利用刚升级完成的时间让大部队发动一次有攻防优势的进攻。

三个种族的攻防升级具体影响的单位并不一样。人类分为生物部队攻防和机械部队攻防;星灵分陆军和空军攻防,另有所有单位的离子盾升级;虫族没有离子盾,但地面部队的近战攻击和远程攻击是分别升级的。

此外,还存在针对个别单位的单独攻防升级项目。人类的建筑护甲升级(+2 甲),雷兽的硬化甲壳升级(+2 甲),人类的恶火对轻甲的伤害加成等。

同一层攻击升级对不同单位的影响也不一。例如虫族地面近战攻击升级,跳虫是每层升 1 点,而雷兽则是每层 3 点。而三族所有防御升级却全是 +1,专项升级除外。因此三攻三防的枪兵内战,和零攻防的枪兵内战效果一模一样,但三攻三防的坦克对打起来却比零攻防的对打死得更快。高级兵种在攻防加成上享受到的比初级兵种更多一些。

多重攻击

在游戏中,“多重攻击”可以理解作“左右开弓”。也就是每次攻击有双份,每份独立进行攻防计算。游戏中除了星灵母舰是 6 重攻击以外,别的拥有多重攻击属性的都是双重攻击。

大部分双重攻击的单位都可以从外观上直观地看出来,收割者是双枪党,显然是双重攻击;女妖导弹有明显的相互缠绕的轨迹,也是双重攻击,导弹塔也类似;狂热者是帅气的幽能双刀;巨像和凤凰的两道激光那么明显,女皇表示她也有两只爪子……

例外的是行星要塞和不朽者。游戏中说明文字上写的行星要塞是加装了双管“伊比克斯”加农炮,外形上也很霸气,却不是双重攻击。不朽者的游戏背景资料写道,他们是仅存的龙骑士们加装了双重相位分裂炮,但实际游戏中也不是双重攻击。

双重攻击意味着 “一轮攻击,两份效果”。通常来说,双重攻击的特性主要是为了数值平衡,“打了一半”的情况极少出现,但如果你刻意制造还是能做出来的,比如狂热者的两刀就是有先后的。

在多重攻击下,伤害计算公式依然简单而符合逻辑:

伤害 = max { 攻击力-护甲值, 0.5 } x 多重攻击数

例如:

  • 零攻收割者,攻击力 4×2;
  • 三防雷兽,护甲 4。

每一轮攻击会造成 0.5×2 的伤害,也就是 1 点。而不是 0.5 点。通常来说,双重攻击在攻防优势时的收益更大,而劣势时的差距也更大。

双重攻击存在完全同步的两次攻击(收割者),以及有先后的双重攻击(狂热者)两种情况,两者在极端情况下的表现会有微小的不同,但大致没有区别。

特定属性加成

很多兵种对特定属性的对象的攻击力会有额外加成。例如劫掠者的普通伤害是 10,而对重甲单位的伤害是 20。被加成的属性通常有轻甲、重甲、生物单位等。目前还没有兵种对两种以上的属性有加成伤害。攻防升级对加成伤害同样有效,升级变化数值有些高于基础伤害的增加值。

但加成伤害的具体数量并没有明确的规律可寻,孢子爬虫对生物单位的伤害高达基础伤害的 3 倍。(15→45),而执政官则只加成约 40%(25→35)。通过特定属性加成并且分别微调,暴雪给自己留了个方便的平衡性改动的口子。

这些加成的计算优先级最高,只和攻击者及被攻击者的属性有关,计算时可以直接视为基础伤害。这造成了非常明显的兵种相克的链条,使用针对性的兵种能有效扩大优势夺取胜利。

攻击间隔

每个可进行直接攻击的单位都有两次攻击间的时间间隔设置,数值也是游戏里的秒。不少资料简单理解为攻击频率,严格地说是不对的。频率定义的是每秒多少次,而不是两次间隔;

  • 攻击间隔是该单位两次攻击行为之间的最短时间间隔,这个时间被形象地称为 “Cooldown”,来源于工业机械的停机散热。并不是到时间就必须进行下一次攻击;
  • 对于分先后的多重攻击,攻击间隔严格描述的是多重攻击每轮攻击中 “第一发” 之间的时间间隔。例如狂热者的两轮攻击,两个第一刀之间的最短时间间隔为 1.2 秒。多重攻击内部间隙一般不考虑了;
  • 除凤凰战机以外,所有兵种在都要站定时才能攻击,也就导致了 “甩枪” 这一操作的出现;
  • 站定输出的实质在于产生一次攻击前有短暂的前置时间,随便理解成瞄准、深呼吸、扣扳机都行,这一时间各兵种有不同但都接近于零,实质上就是程序在判断输出时必须无移动指令;
  • 实战中,站定输出的前置时间长度确实存在,原因是网速。你网速越好,前置站定时间越短;
  • 站定输出的后置停止时间是装饰用的,打完了歇口气的感觉,可以通过手动移动指令覆盖;
  • 兴奋剂、肾上腺素等升级可以减少输出间隔,在相同时间内作出更多次攻击行为,提高伤害;
  • 射程相当时,在移动上有优势的单位可以通过操作把对方兵种的攻击频率拖到跟自己一样;
  • 巢虫领主、航母等附带单位的攻击间隙,主单位与附带单位的攻击间隙都是独立计算的;
  • 尽管攻击力除以攻击间隔就可以得到 DPS(每秒输出伤害)数值,但 DPS 数值并不能有效描述该类单位的实战输出强度;
  • 部分战斗系技能有冷却时间,不耗蓝技能的 CD 较长,而耗蓝技能出于平衡性因素也添加了一些 CD,比如灵能风暴的 2 秒;
  • 修理技能没有 CD,感染者扔异化作战体也没有 CD;

 

距离与体积

星际中的长度单位以“格”为基础单位,游戏中各种涉及到距离、长度、速度的数据,均以格为基础数据,用精确的小数衡量。“格”的范围在建造建筑时体会非常明显。

尽管建筑占地为 2×2、3×3 之类,但建筑实际挤占的空间却略小于占地面积。在两个对角建造的建筑缝隙间,依然可以穿过体积小于 1 的兵种,比如机枪兵或者小狗。需要错一格才能严格封堵。对于 5×5 的主基地则更为特殊,错两格都依然能通过 1 体积兵种,错一格时甚至能通过一个追猎者。

每个单位都有自己的体积,以指定半径的圆形描述,属于一个内部数据,与玩家选中单位时脚下的圆形没有关系,只能通过解析客户端数据获得。所有的占位、可穿过等与体积相关的特征,都与这个内部数据相关。当两个单位的圆形最近处宽度小于兵种自身直径时,寻路算法便不把两单位之间的缝隙视作一条通道了。部分单位在切换形态时,例如攻城坦克切换到攻城模式时,其体积会发生变化。另一个更实际的例子是星灵机械哨兵的力场,通过从某个特定坐标 “膨胀” 出一个圆形,从而对部队分布产生影响。

而在建筑摆放时,则无视圆形体系这套系统,单纯以建筑网格判断是否可以建造。因此两个相邻建筑的碰撞体积圆周可能是相交的。所以有时候会出现攻城模式的坦克挡住了气矿,气矿无法建造的情况。

空中单位也存在体积,区别在于空中单位并不强制进行碰撞,而是缓慢地相互分离,直到达到最后互不重合为止。

视野

每个兵种与建筑都有自己的视野范围,呈圆形,在视野内才能看见敌方的动静,视野外则覆盖有战争迷雾,只能看见地形:

  • 地面单位的视野受地形影响更大一些,会受到树、草丛、柱子等影响,而空中单位则不会;
  • 所有友方单位的视野共享,可以借助友方单位的视野进行一些必须有视野才能操作的动作,比如投放矿骡或者挖虫洞;
  • 建筑也拥有自己的视野,大多都是 9,但主基地和防御建筑的视野会更大一些;
  • 感应塔的视野是 12,但额外拥有 30 的感应范围,可感知敌人位置,但不属于视野;
  • 不考虑感应塔的特例,视野最大的建筑是萨尔那加塔,为 22,单位是星灵母舰,14;
  • 雷达可以全图开视野,半径为 13,这个都知道;
  • 所有的工程兵视野均为 8;
  • 建造中的建筑视野为 5,包括自身占据体积,对人类而言,建造中的 SCV 也会扩大这一区域的视野。
  • 虫茧,即正在变异中的毒爆、眼虫、巢虫领主和幼虫孵化各兵种时的状态,视野为 5。
  • 埋地单位视野减少为 4,但感染者和毒爆不变,异化作战体减少为 5;
  • 反隐可以认为是一种特殊的视野,反隐单位的反隐距离永远与视野一致;
  • 虽然如此,但视野会被地形遮挡,反隐能力却不会。悬崖下光子炮台,地形受限视野无法覆盖崖上,但借助友军视野,依然能侦测到高地上范围内的隐藏单位;
  • 视野详细数据见:http://wiki.teamliquid.net/starcraft2/Sight

 

射程

有距离的衡量单位以后,射程也就可以确定了。在游戏中射程的重要性受操作的影响非常大,更经常与地形、视野配合,获取更大的战斗优势。

  • 射程的起止点是从攻击单位的体积边缘一直到受伤害单位的体积边缘,以确保两个不同体积但相同射程的单位在无额外操作的情况下可以相互攻击到对方。最典型例如地堡枪兵(5+1)对抗追猎者(6);
  • 因此在视觉上,重形单位射程比实际数值更大一些。典型例子:光子超载的星灵枢纽、仲裁官;
  • 每个单位都存在体积,其边缘和视觉并不完全一致,有的大有的小。具体数值解析客户端可得,实际往往通过聚团时大小靠感觉判定;
  • 尽管异龙的射程只有 3,但由于弹射另有 2 的射程,再加上建筑较大的自身体积,异龙能打到 7 以上的距离。借助建筑弹射绕路的地面部队也是异龙操作技巧之一;
  • 近战兵种也是有射程的,数值上视为 0.1,但毒爆的触发范围为 0.25,确保毒爆对近战单位的优势。毒爆的伤害范围为 2.2,以爆炸中心点开始计算;
  • 升级冲锋的狂热者在冲锋追上敌人后必定至少造成一次伤害,这次伤害的 “近战距离” 可能大于 0.1,属于特殊设计;
  • 大部分兵种的远程攻击距离是整数,但并非必然。收割者(4.5)、巢虫领主(9.5)表示有话说。
  • 蔽目毒云造成的近战距离也为 0.1;
  • 人类攻城模式坦克和星灵风暴战舰是仅有的两个最大射程比视野还大的兵种,需要友军帮助打开视野才能获得最大攻击范围;
  • 人类攻城模式坦克是唯一一个有最小攻击距离的单位,距离为 2;
  • 星灵航母的射程分两段,8 点为派出拦截机的触发距离,14 点为拦截机的强制回收距离。
    • 拦截机派出时间为 8 秒,8 秒后必须回到航母后再重新派出,因此以下内容在讨论距离为 8 – 14 范围时都假定在同一个 8 秒内;
    • 拦截机本身在动画上有射程,但该射程实际并无作用,拦截机有时在动画效果上会飞到接近 14 处,但依然不会攻击 14 以外的目标;
    • 在派出拦截机后,航母可以后撤,只要 14 范围内,拦截机在 8 秒内依然会攻击既定目标;
    • 拦截机也有视野,因此在攻击 8-14 范围目标时不需要额外开视野;
    • 在 8-14 范围内,目标死亡后,玩家可以手动点选一个新目标,拦截机可以不回舱直接转向新目标。此时航母会驶向目标,再次手动拖拽可以使它继续停在 8 以外,达到距离外切换目标的效果;
    • 但 8 为“派出距离”,也就是说如果敌方在 8-14 内时,尽管已经派出的拦截机会继续攻击,但新造的或者未派出的拦截机则不会继续派出;
    • 默认的 “派出间隔” 为 0.5 秒,4 秒全派出。可以通过升级提升到 0.125(前四)到 0.25(后四),1.5 秒全派出;
    • 拦截机的攻击间隔为 3 秒,基础攻击力 5×2 双重攻击,一次派出可以攻击三次;
    • 航母的攻击力完全来自于拦截机,相当于 5 点攻击力的 16 重攻击。因此敌方的护甲升级会产生巨大的影响;
    • 拦截机 25 血,虽然无法选中、无法手动点击,但可以被自动防御机制,例如防空塔、机枪兵、光子炮台等击中摧毁,因此航母需要时刻注意补充拦截机。友军人类开启 SCV 自动修理也可以修理拦截机;
    • 拦截机虽然不占用人口,但由于航母占用 6 人口,因此初始四架每架拦截机等效占用 1.5 人口,满载八架后每架等效占用 0.75 人口;
    • 空的航母在攻击指令下达后也会停在 8 格处,而不会飞到敌人脸上;

 

移动速度

移动速度是建立在游戏内距离和游戏内时间双重数值下的的一个兵种动态属性。速度的作用在于快速接近敌人、逃跑、追击、巡图、捡漏等,以建立整个对战过程中的战术优势。速度并不影响攻防数值,但却可能影响兵种相克。速度的衡量标准单位为 1 格/秒,可以简写为 1。

  • 移动速度与攻击速度(攻击间隔)是分别的两个属性,例如时空折跃会将区域内敌方兵种移动速度降低到 50%,但并不改变其攻击速度,虽然从感觉上来说应该变;
  • 在较大部队行进时,每个兵种的速度是各自计算的,由于寻路与体积碰撞等因素,整个部队的移动速度会慢于组成兵种的移动速度;
  • 游戏中速度最快的是星灵航母的拦截机,速度为 7.5,但是考虑到拦截机属于特殊情况,而航母本身却只有可怜的 1.875 的速度,所以实战意义上的最快速度并不是它;
  • 可操作的最快速度是菌毯上的代谢加速跳虫,为 6.1088,其次紧随其后的是冲锋状态中的狂热者,速度为 6.05;
  • 那么显然问题来了,冲锋技术哪家强 冲锋狂热者能否追击到菌毯提速狗?
  • 答案当然是不能。事实上冲锋也是一个 BUFF,持续 3.5 秒,在此时间内差不多能冲过 22 格距离,相当于萨尔那加塔的视野,也差不多是一个屏幕的距离,然后就会慢下来;
  • 这与某次补丁的 “冲锋后至少能击中一下” 不矛盾,冲锋在两者距离小于 0.1 时会提前结束,当提前结束时,必然产生一次攻击。但如果是时间到结束,则相当于始终未曾接近,故不产生攻击行为;
  • 所以如果你够骚,可以尝试拿条跳虫把对方的狂热者带到一个屏幕外自己的大部队这里来消灭掉;
  • 速度第三是无菌毯提速狗,4.6991,所以穿狗入矿区必须靠建筑预防;
  • 并列第四的是推进器状态医疗艇、恶火和凤凰,均为 4.25;
  • 速度最慢的是未升级王虫,为 0.586,理所当然;
  • 其它数据详见:http://wiki.teamliquid.net/starcraft2/Speed

 

弹道

很多兵种发射的子弹都有明确的行进轨迹,人类的各种飞弹,星灵的蓝色激光,虫族的绿色喷吐。弹道并不仅仅是一个视觉效果上的设置,在数据方面也会产生一些变化。

  • 弹道类攻击从攻击方发射出来,到防御方受到攻击,中间存在一个时间差。这个时间差随着弹道长度会变化;
  • 随着目标的移动,弹道也会发生变化,最后总是会击中目标,即使目标已经移出自己的射程外;
  • 铁鸦的可以跑远躲开的自动导航炸弹是技能,不是弹道类普通攻击;
  • 子弹飞行时间的长短并不影响攻击兵种的攻击频率,间隔是按发射频率算的;
  • 弹道类攻击有更明显的发射前动作,而不光光是子弹的飞行时间。这使得 “甩枪” 动作需要停留的时间比机枪兵和收割者更慢一些;
  • 尽管常规移动并不影响弹道类飞行的命中,但确实可能通过某些手段回避掉已经发出的弹道类攻击。比如追猎者的闪烁,或者人类兵的快速上下医疗艇。原理是取消弹道类攻击的飞行终点;
  • 整个游戏唯一针对弹道类攻击的技能是铁鸦的定点防御靶机,但出于平衡性修正,个别视觉上属于弹道类的攻击也被排除在外了;
  • 所以上医疗艇防的弹道类攻击种类还是最多的;
  • 弹道类攻击会出现很多子弹同时射向某个残血目标导致大量输出浪费的现象,原因也是弹道攻击的延时。尽管输出有先后,但在第一发子弹飞到目标前,大家都会认为目标还活着纷纷扔出自己的菜刀;
  • 在非常非常极端的情况下,瞬发技能也可能造成类似的输出浪费。这是因为星际在游戏机制上的最短时间间隔为 0.001 秒,即 1 毫秒,可以通过分析游戏录像包数据得到。这使得在同一个时间间隔内的动作变成 真•同时;

 

星灵护盾(一)

星灵护盾是星灵特有的属性,覆盖所有的建筑和兵种,甚至包括生产过程中的单位。在任何情况下,星灵单位受到伤害时,都优先扣除护盾值,到护盾为 0 时,再扣除 HP。星际 1 中存在蝎子毒血无视护盾直接伤害 HP,星际 2 不存在。

护盾和护甲的防御是分别计算、单独升级的,所有单位的护盾防御初始值是 0,每级 +1。计算公式和护甲完全相同,即:

伤害 = max { 攻击力-护盾值, 0.5 } x 多重攻击数

在最极端的情况下:

  • 零攻收割者,攻击力 4×2;
  • 机械哨兵,守护者之盾,使光环内友方单位受到的远程伤害减少 2 点;
  • 二盾狂热者,护盾防御 2 点。

收割者每轮攻击为 (4-2)x2,而护盾防御也为 2,实际伤害为 0.5×2,即 1 点。当未开启守护者之盾时,则每轮实际伤害为 4 点。守护者之盾开启与否效果很明显。

当护盾的总量不足以抵挡单次伤害时,则护盾防御与护甲防御同时起作用。比如:

  • 零攻掠夺者,对重甲伤害 20;
  • 一防一盾追猎者,护盾剩余 10 点,护盾防御 1 点,护甲防御 2 点,重甲;

则掠夺的下一发伤害计算为:

  1. 护盾防御减伤: 20-1=19 点伤害;
  2. 全部剩余护盾抵挡掉 10 点伤害,19-10=9,剩余 9 点伤害传递给 HP 承受;
  3. 9 点伤害被护甲抵消 2 点,剩余 7 点伤害实际作用于追猎的血量上。

但当该临界点下的伤害被护甲完全防御时,并不造成额外 0.5 的伤害。比如:

  • 零攻狂热者,伤害 8×2;
  • 一防一盾机械哨兵,40 护盾 40 血,护盾防御 1 点,护甲防御 2 点;
  • 零防一盾机械哨兵,40 护盾 40 血,护盾防御 1 点,护甲防御 1 点;

由于狂热者双重攻击有先后,则攻击过程为:

  1. 前两轮打在护盾上,造成两次 (8-1)x2 =14 伤害,哨兵剩余 12 盾 40 血;
  2. 第三轮前一刀 7 点伤害盾完全吸收,后一刀 7 点伤害盾吸收两点,剩余两点打到护甲上;
  3. 零防哨兵会损失 1 点血量,39 HP,一防哨兵则未损失血量,40HP;
  4. 等待哨兵回复满盾后,再重复以上过程,零防哨兵再减 1 点血量,38HP,一防哨兵依然未损失 HP,40HP;

零防哨兵的掉血曲线间接证明了狂热者双刀有先后,而一防哨兵未掉血,表明在临界点上,一次伤害如果已经对盾造成实际损伤,则即使剩余伤害被护甲完全抵消,也不会额外计算 0.5 伤害。理由大概是已经存在伤害,不需要再考虑伤害下限了。

护盾会在最后一次伤害结算后 10 秒开始回复,回复速度为每秒 2 点。有些说明写的是脱战后 10 秒恢复,从语言表述上来说是不正确的。星际跟 WOW 不一样,并没有明确的“战斗状态”,也就没有进战脱战这种说法。只要 10 秒不受到伤害,在战头中也是可以回复的,下次用闪烁追猎记得多操作。

建造中的建筑或折跃中的单位的护盾行为例外。建筑在放下的一瞬间就有 10% 的血量与护盾,而后按建造总时间与总护盾值匀速增长,没有 10 秒的结算时间,没有护盾防御加成,也没有额外的回复。例如:

  • 星灵枢纽:1000 血 1000 盾,建造时间 100 秒,放下的一瞬间有 100 血 100 盾,之后每秒增加 9 血 9 盾;
  • 零攻追猎者对重甲每次攻击 14 点伤害,1.44 秒攻击一次,100 秒攻击 69 次,造成 966 伤害;

也就是说,只靠一个追猎者,在主基地建造过程中完全无法造成实质伤害……

折跃兵种的过程也是一样,速度较快没有仔细计算初始状态是否是 10% 血量。

所有建筑的护盾和血量都相同,绝大部分的兵种血量都大于等于护盾,但黑暗圣堂和执政官除外。考虑到升级时间与升级费用,在对抗虫族时升级三防有时不如升级一盾更合算,尤其是队伍内有大量执政官时。对抗人类……因为有 EMP……还是算了吧。

星灵护盾(二):刚毅护盾

刚毅护盾是星灵不朽者特有的被动技能,当护盾存在时,所有攻防结算伤害高于 10 点的攻击效果都降低为 10 点。这一上限是经由护盾防御结算后再作限定的,也就是说是 min{攻击力-护盾防御值, 10}。比如:

零攻追猎者,普通伤害 10 点,对重甲伤害 14 点;
三盾不朽者,重甲,护盾防御 3 点,护盾满,刚毅护盾有效。

则追猎打不朽,以重甲结算,攻击力为 14 点,不朽护盾防御力为 3 点,则攻防结算伤害为 11 点,触发了刚毅护盾,减少为 10 点,所以最终结果是不朽减 10 点盾,并发出刚毅护盾视觉效果。当不朽的护盾不足 10 点时,刚毅护盾效果依然存在,将高于 10 点的攻击伤害降为 10 点,剩下计算和普通的分界线计算一致。

但刚毅护盾对固定伤害的技能性攻击是无效的。尽管星际2是个科幻背景游戏,不过把以下这些技能理解作是“魔法攻击”,会更方便一些。

“魔法攻击”(技能伤害)

星际2是个科幻背景游戏,但把这些技能理解作是“魔法攻击”,理解上会更方便一些。

  • 聚变打击(幽灵) – 较大范围内 300 点伤害。
  • 大和炮(战列巡航舰)- 单体 300 点伤害。
  • EMP (幽灵) – 范围移除 100 点星灵护盾与 100 点能量(如果有能量)。
  • 哨兵导弹 (寡妇雷) – 对攻击主体造成 125 点伤害(有护盾单位额外 +35 点),并造成 40 点溅射伤害(有护盾单位额外 40 点)。
  • 猎杀飞弹 (铁鸦) – 攻击主体及范围内造成最多 100 点伤害。
  • 狙杀(幽灵) – 对生物单位造成 25 点伤害,对灵能单位额外造成 25 点伤害。
  • 能量反蚀(光明圣堂武士) – 消耗目标所有能量,每点能量造成 1 点伤害。
  • 灵能风暴(光明圣堂武士) – 范围内 8 次伤害每次 10 点,共计 4 秒。
  • 霉菌滋生(感染者) – 范围内 4 秒造成 30 点(重甲 40 点)伤害,且无法移动。

以上为伤害性技能,其特点是:

  • 伤害值不受攻防升级影响
  • 伤害值无视护甲、护盾防御值
  • 伤害值无视守护者之盾,但是会受到腐化影响
  • 伤害值无视刚毅护盾
  • 除聚变打击外,所有的技能施放都需要能量值

基于这些特性,认为是“魔法攻击”也并无不妥。是的,毒暴的伤害并不属于此类,毒暴的伤害是受攻防加成的。

能量

能量值是大部分兵种和单位施放特殊技能的消耗性资源,在游戏中以紫色条显示。大部分有能量单位的能量上限为 200 点,并且永久地以每秒 0.5625 点回复能量,刚生产出来的单位初始拥有 50 能量,一些单位可以研发升级让初始技能变为 75 点。但有三个单位例外:

  • 星灵枢纽初始能量 0 点,上限 100 点;
  • 皇后初始能量 25 点;
  • 定点防御靶机初始能量 200 点,每秒回复 1 点能量。

和血量相反,能量是向下取整的。

没有任何方式改变能量的增长速度与技能消耗,但依然有两个技能可以影响敌方能量:

  • EMP(人类,幽灵) ,范围内有能量的敌对单位减少 100 点能量;
  • 能量反蚀(星灵,高阶圣堂武士),清除敌对目标所有能量,并对其造成等量伤害。

 

临时性攻防提升

特定的技能也会影响伤害数据:

  • 守护者之盾:

星灵机械哨兵的主动技能,展开一个范围为 4 的力场,范围内所有友军单位受到的远程伤害降低两点。守护者之盾属于临时的、有限制的防御提升。要注意的几点是:

  • 跟攻击单位的位置无关,只跟受伤害的单位是否在范围内有关;
  • 同样,无法防御“魔法攻击”,比如寡妇雷的哨兵导弹;
  • 自己也同样受益;
  • 对友方误伤也同样起效果;
  • 近战攻击不受减免,溅射伤害不受减免(未证实)
  • 蟑螂、刺蛇、宿主的蝗虫等,在与敌方贴脸攻击时,攻击动作会发生变化,属于近战,也不受减免

 

  • 腐化:

腐化者主动技能,使目标在 30 秒内受到的伤害提升 20%。注意的点是:

  • 尽管腐化者是对空单位,但腐化技能也可以对地面单位释放;
  • 腐化后的伤害值是可能有小数点的,综合开篇讲的血量向上取整的特性,显示结果就是多次相同情况下的伤害值可能偏差 1 点;
  • 尽管它也属于技能,但并不直接产生伤害,而是依附于普通攻防,因此也受攻防升级影响;
  • 对技能伤害同样有加成,比如寡妇雷炸被腐化不朽伤害为 192 点。(未证实)

 

  • 定点防御靶机:

铁鸦主动技能,在目标区域投放一个定点防御靶机,击落范围内所有向友方发射的弹道类攻击,每次防御消耗 10 点能量。防御机的工作原理是利用激光破坏飞向友方单位的弹道类攻击,包括人类导弹类攻击、星灵慢速弹道激光等等。注意点包括:

  • 与守护者之盾不同,无关攻击者的位置,甚至也无关友方位置,只要飞弹经过防御范围,定点防御靶机就有作用;
  • 与守护者之盾不同,靶机是直接免除某些类型的攻击,对不免的攻击则无影响,故不存在攻防值计算问题;
  • 与守护者之盾不同,靶机对友方误伤不防御;
  • 基于其工作原理,只对“有弹道、飞弹类”的远程攻击起作用,比如掠夺者、女妖、追猎者、凤凰,飞龙、腐化者,对瞬时远程攻击不起作用,比如机枪兵、不朽等。
  • 对航母的拦截机也有作用;
  • 同样基于其工作原理,雷神和落地维京的对地攻击也无法击落,只能击落雷神和维京的对空飞弹。
  • 所以靶机自身也是可以在不触发防御机制的情况下被击落的;
  • 对于多重攻击,每一重攻击都要消耗一份靶机能量;
  • 靶机能量回复速率比一般单位快,为每秒 1 点,故每存在 10 秒便可额外多击落一次弹道攻击;
  • 靶机属于建筑类型,工程站建筑护甲升级可以为靶机提供额外两点护甲,但它是轻甲,全星际唯一的轻甲建筑;
  • 因为是建筑,所以狙击、腐化、灵能风暴都无效;
  • 但你妈能量反蚀是有效的,一放一个准。50 血 200 能量初始还满能量的家伙……
  • 靶机在原理上属于攻击类,只不过攻击目标是弹道类子弹,所以工程站的研发项目“瞬时自动追踪”,也能让靶机的防御范围 +1,从 8 到 9。
  • 靶机的初始存在时间为 180 秒,最多可以防御 38 次攻击,可升级。升级后存在时间延长到 240 秒,至多防御 44 次攻击;
  • 可以被 SCV 修理,详见另一篇:《星际争霸2建造与修理详解》;
  • 幻像的攻击也会防御,一样消耗能量;
  • 攻防升级与靶机的防御能力无关,三攻子弹和零攻子弹一样防,所以越后期靶机减免的伤害越多,而守护者之盾则固定减伤 2 点,后期效果更弱;
  • 刺蛇、皇后等兵种在与敌方贴脸攻击时,属于近战,此时靶机不起作用
  • 多个靶机不会拦截同一发导弹,他们的防御能力总是累加的;
  • 特别注意:某个版本后,对巢虫领主也不起作用了;

 

结算顺序

参考以下事实:

  • 掠夺者,对重甲 20 点伤害;
  • 不朽者,重甲,拥有刚毅护盾,任何超过 10 点的伤害降低为 10 点,且站在守护者之盾范围内;
  • 掠夺者射出一枪,进入守护者之盾,对不朽造成 8 点伤害。

关于腐化,也有类似的结论:

  • 掠夺者,对重甲 20 点伤害;
  • 不朽者,重甲,拥有刚毅护盾,任何超过 10 点的伤害降低为 10 点,但处于被腐化状态,受伤害增加 20%;
  • 掠夺者射出一枪,对不朽造成 12 点伤害。

更复杂的:

  • 掠夺者,对重甲 20 点伤害,开兴奋剂增加 50% 攻速;
  • 不朽者,重甲,拥有刚毅护盾,任何超过 10 点的伤害降低为 10 点,但处于被腐化状态,受伤害增加 20%;
  • 附近的机械哨兵展开了守护者力场保护不朽者,所有的远程伤害减少 2 点;
  • 掠夺者射出一枪,对不朽造成 10 点伤害。

根据这一事实,我们得出一个伤害结算顺序的概念:

  • 伤害值都是通过顺序,在一个最基础的值上根据条件进行数值修正或数值替换;
  • 首先计算永久性攻防值(兵种属性决定基础数值),在此基础上进行技能性攻防修正(兵种技能影响最终数值);
  • 如果有多个永久性攻防值(兵种属性),先结算无附加条件的,再结算有附加条件的(护甲类型、兵种类型);
  • 如果有多个临时性攻防修正(兵种技能),先结算无附加条件的,再结算有附加条件的(远程、弹道);
  • 在以上四条确定的同一计算顺序内,先结算输出的伤害值(伤害别人的企图),再结算受到的伤害值(受伤害的企图);

比如上述例三:

  1. 首先计算永久性攻防值(兵种属性):掠夺者 10 点伤害,不朽者 0 盾防,伤害企图为 10 点;
  2. 因为不朽者护盾防御值为 0,因此受伤害企图变为 10-0 = 10 点;
  3. 因为掠夺者有两个永久性攻击值,其中 “对重甲 +10” 属于有条件数值,攻击数值修正为 20,防御为 0,伤害企图为 20 点;
  4. 因为不朽者没有针对远程攻击的有条件防御加成,因此受伤害图依然为 20-0 = 20 点;
  5. 判断掠夺者永久性攻击技能,有振荡弹,但对伤害数值无影响,因此伤害企图为 20+0 = 20 点;
  6. 判断不朽者永久性技能,有刚毅护盾,会产生效果,受伤害企图无视源伤害大小,强行修正为 10 点;
  7. 判断掠夺者临时性技能,有兴奋剂,但对伤害数值无影响,伤害企图依然为 10 点;
  8. 判断不朽者临时性技能,有两个,腐化和哨兵盾:
    • 首先结算无附加条件的腐化,受伤害企图修正为 10 x ( 1+20% ) = 12 点;
    • 再结算有附加条件的,哨兵盾只对 “远程攻击” 有效果,使得受到的远程伤害减少 2 点,受伤害企图修正为 10 点;
  9. 无其它条件,最后不朽受到 10 点伤害,进行盾数值、血量和护甲的计算。

如果结算时是先哨兵后腐化,那么不朽的每次伤害只有 (10-2) x 2 = 9.6 点,考虑到血/盾的数值向上取整,我们就会见到单次伤害为 9 点,而非 10 点了。

尽管未作测试,但可以大胆断言,在盾血边界的那次伤害上,星灵可以享受盾防御和护甲防御的双重减免,同时腐化也不会影响到转移到血量上的剩余伤害部分。因为在“伤害企图值→受伤害企图值”那次计算中,腐化的技能已经结算完毕。盾血边界的计算,其实是 “受伤害企图值” 与盾、血数值上的计算,而“受伤害企图值”本身已经包含了腐化的结算。否则就变成了一技能两次结算,属于 bug 了。也就是说三防 200 血 1 盾 4 护甲腐化不朽者,被三攻坦克轰了一炮以后,只也掉 7 滴血,而不会出现 (12-1) * 1.2 – 4 = 9.2 血这种复杂的情况。

谈谈保险

昨天下午,某银行信用卡给我打了半小时电话,推销他们的一项保险业务。一如所有的推销电话一样,最后都只能强行挂机,没办法礼貌地互相结束通话,唉,可怜那业务员。(ノへ ̄、)

这个业务很简单,每月交差不多 140来块钱,直接从信用卡上扣,全年 12 期,总长 5 年,可提前结束。价格据说是根据我的年龄、职业等测算出来的,每个人还不一样。小年青们会便宜一点,老头子们更贵一点。然后收益是什么呢,在业务员啰啰嗦嗦不断夸耀优点的情况下,我总结出来以下几项:

  1. 如果是疾病性住院,则只要住院,无视原因无理由赔付每天 ¥200,提供医院帐单复印件、身份证复印件、信用卡复印件即可。有 500 天上限。
  2. 如果是外伤性住院,则只要住院,无视原因无理由赔付每天 ¥400,提供医院帐单复印件、身份证复印件、信用卡复印件即可。有 500 天上限。
  3. 如果一年无赔付,则反还 25%。
  4. 小病小灾,不住院不算保险范围。

其实就是个无理由住院额外险,无论是天上掉流星砸到脚,或者被加班逼到内出血,反正只要躺医院了,就按价赔偿。……不知道自残算不算。( ̄△ ̄;)

然后我拒了。在电话录音说您是否确认现在通过语音确认开通时及时地拒了。

嗯,这个业务本身其实还可以,如果是我玩轮滑狂热的年代我还真就说不定买了,只不过在现在的境况下,核算了一下成本,基于我的逻辑,最后还是回绝掉了。

首先,其实要知道,保险其实永远是越买越亏的。从逻辑上说,保险是以集合众人的付出,给一些人的损失兜底。如果保险运营不需要成本,理论上对于一个人来说,整体的付出大约等于各种损失乘以机率以后的期望值。但实际上,考虑到保险还要支付销售提成、运营成本、赔付审核、股东分红、物业建设等等,对于一个保险客户而言,单纯考虑支出和损失期望,是肯定不合算的。只有考虑到对损失赋以一个额外的权重,也就是考虑到 “损失超出了你的承受能力” 的情况时,购买保险才是一个合算的行为。

换句通俗的话说,就是我明知道不出意外或者出点小意外都是亏的,出大意外,从概率乘以损失来说我还是亏的,但因为我实在承受不起大损失,万一呢?所以还是买点保险用小损失代替吧。比如汽车保险,其实出事的机率,乘以出事要赔的钱,整体而言还是比汽车保费低,但因为真要出点什么事几十万的钱还是会对个人造成极大的甚至是不能承受的打击,那就还是买吧。

我们举另外一个极端的例子。大家在生活中经常会丢失钢磞儿,几毛一块的,积累下来也有不少,比如每年少则十块,多则一百。现在我推出一项保险,“钢磞丢失险”,每月交五块钱,只要丢钢磞就给你等额赔付。假如不考虑实际执行难度,就假设一点不麻烦,说赔就赔,也没有骗保,你会买么?

如果你说,不买,丢了就丢了吧,说不定丢的还没保险费多,只丢钢磞再多也丢不成穷光蛋的。相信大家都完全能理解这种想法。

事实上,大部分人从保险得到的赔付都是不及保费支出的。也就是说,丢的确实不及保费多的。你每月可能丢一个,可能丢五个,可能丢十个,但参保了就相当于稳定丢五个了。全年一统计,你最多的一个月丢了 8 个,有两个月没丢,大多丢三四个,你就发现自己明显赔了。明年就不必参保了。

但假如我们加一个额外限制,『在丢到某一数量以后,这个巨大损失个人承担不了』。比如开开国国王规定如果国民某个月丢硬币损失超过 10 块要杀头。那显然这份保险就变成了买命钱了,五块?太便宜了。

再举一个极端例子。如果你的全部收入全部交了保险,不管你当前交了多少,付给你的保费永远是固定值。过一两年你肯定就会发现亏大了,还不如自己存钱合算。你觉得呢?

也就是说,保险主要针对的是你自己不能承受的重大损失,对于一些承受无压力的小损失,完全可以考虑自行承担,并不一定需要保险,当然也不是不可以考虑,还是看你的承受能力和损失厌恶度。

所以土豪们是不需要常规保险的。是嘛,汽车三方险最多也就到一百万,对于豪车还是杯水车薪,基本都靠土豪自己兜。

其次,这个险号称最长可达 500 天,20 万上限。其实吧……那是住院啊,谁能住院 500 天啊。就算 5 年 500 天,那也是每年住院三个多月啊……这种情况下,医疗保险、扩展医疗保险,甚至是亲朋好友都比这个保险靠谱。当然,两险是不冲突可以同时用的,但归根结底,这个保险反而更像是一种锦上添花而不是真正可以兜底保障的险种。在收益上其实比不上按比例赔付的常规保险类。

那么如何核算支付与收益呢?很简单,每月不是扣 140 来块钱么?全年 1700 块,每年需要住 5-8 天院才能收回保费。这就是一个比较合适的可比较尺度了,就算出了轻伤车祸,在北京这种常规情况下也很难住够五天院,大多都会让你回家休养。而如果重伤到需要超过 8 天,无差别的每天 200-400 也是杯水车薪,我需要更强的保险覆盖。

只有像我学生时代那样,经常没事出个小伤,进医院擦个药打个板,医生也好说话,总能腾出闲天住院的那种状态,才比较合算。而这个保险又是要审核职业、收入等等因素的,想找他们的 “优质客户”,估计在我学生年代就是劣质客户吧。如果我是他们的“优质客户”,那么他们基本就不是我的“优质保险”。

在保险收益预估时,不能以最高保障额度计算,而是应该以个人实际和保险本身赔付方式决定的“常规”意外预期计算。保险公司算得比你精得多,但只要你从“可收回保费所需要的意外程度”进行反向计算,就比较容易得到可感知可衡量的收益标准了。

再次,当然还有心理上的因素,人们对小概率事件的估计总是偏离常规的,我也是。唯一常见例外的也就是车险了,人们还是很认可驾车意外的概率的。

人们对幸运的小概率总是高估,要不然也没有人大把大把地买彩票了。——你可以认为买小额是图个别的心理幸福感之类的,可幸福感不也是心理因素么?

而对厄运的小概率却偏向于低估,就好比真的计算车祸概率,或大或小几十人里也能摊上一个,相当于一个班级、一个小公司、一个小团体中间总能遇上一项,但每个人都不认为是自己。我也是。作为理性青年,在作必要决策时会考虑到这种情况,而在改善性决策时,这种心理就又会占上风了。就好比我如果需要自费购买人生意外、大病医疗院,和需要自费购买这种改善性医疗险,在决策时的“意外概率”是不一样的……

最后,我非常讨厌这种持续性延后性的扣款,利用的又是人们的遗忘心理和小额支付决策时的心理偏差。个人喜恶,冷暖自知。

,在这里还有一个奇葩的部分,就是反还 25%。一开始我也被绕进去了。要注意这个反还只有在你不产生保费的情况下会出现,被推销员包装成了“实际保费仅 110几元”。

别傻了,如果不出意外没有保险赔偿,多少钱都是白付给保险公司的,保险成本还是应该按出事的计算。换句话说,这个只有银行在核算净收入时有影响,对你核算出意外时的成本与收益是完全没有任何关系的。因为这项条款只有在“不出意外”的情况下才生效,而“不出意外”你拿不到赔付,多少钱都是白送给银行。

而且反过来想想,如果真出了事要住一两天院,你如果去索保,虽然能拿到 ¥200-400,却失去了返还部分近 ¥400 块。这反而会导致你即使真的入院,在两天以内的也不会去找银行赔付,银行照样是净赚。这还真不如直接把保费降一点好呢。这跟车险动态调整保费还不一样,车险意外发生的概率和个人的驾车行为安全意识有很大相关性,而对于住院而言,个人可控制的因素则少很多。另一方面,车险是下一年费用变化,也不涉及历史费用的返还,并且各公司还通用。两者的差距巨大,从这个策略中我更多地看见的是恶劣的算计,而不是对客户的善意。

其实话说回来,如果真的到了个人不能承受的意外,通常一个家庭也就完了。目前看见的保险制度,绝大部分也都有个吝啬的上限,或者有严苛的赔付标准。做得到锦上添花,却做不到雪中送炭。只有市场化的车险好点,医疗保险也只能说呵呵。农业险,包括农业期货,以我外行的角度看来似乎也不错。只是不知道农民兄弟们,身在此间多有经验,是会说哈哈,还是呵呵。

今天刚看了知乎一篇文章,里面是从业人员吐槽人民没有保险意识。

我呸。

少几个推销,少几份算计,少几段夸张措辞,多来点真货。

星际争霸2建造与修理详解

Repair[1] 修理(人族 SCV/矿骡)

  1. 一个可修理的单位,从 1 滴血修到满血的花费是它生产费用的 25%。(极限地说,应该是 0 滴血修理到满血,也就是完整100%的血量,但0血就死了所以实际无法存在这种情况)。
  2. 一个可修理的单位,由一个 SCV 从 1 滴血修到满血的时间和生产这个单位的时间相同。
  3. 也就是说,不同单位的修理速度并不一致。地堡 100 矿,建造花费 40 秒 400 血,那么一个 SCV 每秒修理 10 血,消耗 10/400*100*25%=0.625 矿。而兵营 150 矿 1000 血 65 秒,一个 SCV 每秒修理 1000/65=15.3846 血,消耗150*25%/65=0.577 矿。补给站 100 矿 400 血 30 秒,每秒修 13.333 血,耗 0.8333 矿。
  4. 所以要强攻人族路口时,如果没有地堡,则攻击补给站比攻击兵营合算。攻击输出相同的情况下,补给站修理慢还费钱,总血量也少。
  5. 多个 SCV 可以同时修理同一个建筑,效果累加。单位时间的回血量和花费与 SCV 数量成正比,总花费不变。
  6. SCV 在修理或建造时不能采矿。而 16 农高效采集时每个 SCV 每分钟采 42 矿,故算总帐时需要额外计算每秒 0.7 矿的未采集成本。
  7. 人族建筑在低于 33% 血量时会着火,实战中修理起火建筑需要额外修理火烧掉的那些血量。
  8. 起火掉血为每秒3点。但没建造完的建筑反而不会起火。比如一个完成度 99% 的指挥中心因敌方骚扰只剩 1 血,依然不会起火。但如果另派一个 SCV 建造完成,则完成的一瞬间将起火。因为指挥中心总血量为 1500,1% 完成度有 15+1 滴血,可以烧 5.333 秒钟。理论上你可以造出一个完成一瞬间就烧掉的建筑。
  9. 轨道控制基地和行星要塞的费用基数包含指挥中心的花费。也就是说星轨费用 550 矿 135 秒,要塞 550 矿 150 气和 150 秒。所以要塞每个 SCV 每秒修理 10 血。
  10. 尽管矿、气、血量、能量等数值最终显示为整数,但在游戏内部其实是高精度计算的,到结果时再根据需要取整。
  11. 修理费是“先扣款后维修,多不退少补”的扣费办法。也就是说,你修理一个掉 5 血 / 10 血 / 15 血的地堡都花费 1 矿,但修理掉 20 血的地堡就得2矿。从条目 3 我们知道地堡每 5 血修理费是 0.3125 矿。
  12. 但如果派两个 SCV 去修 15 血的地堡,则反而需要花费 2 矿,还是因为“先扣再修多不退”,每个 SCV 在开始修理时都需要扣掉一矿,各自修了七八滴血,也不会再还你半个矿了。
  13. 修理过程中,矿和气的扣费是分开的,随着血量回升到各个扣费临界点,逐步分别地一矿一气扣除。
  14. 如果你只剩 1 点矿,那么你可以修理地堡 16 滴血。
  15. 如果你只剩 1 点矿 1 点气,你的矿可以修理行星要塞 1500/550*4 = 10.91 向上取整 11 点血,你的气可以修理 1500/150*4 = 40 点血。合起来你只能修理 11 点血,之后就因为矿物不足而停止了。此时气实际上仍有 3/4 未用,但也不会还给你。
  16. 传说中的雷神修理时间是生产时间 130% 的情况已经被修正了。现在雷神修理和生产时间同样是 60 秒。
  17. 铁鸦召唤的 自动机炮 和 定点防御靶机 以 100 矿 50 秒作为修理基准费用,也就是修到满血要 25 矿 50秒。(谁会去修这个啊……)*
  18. 矿骡的修理能力和 SCV 完全相同。
  19. 矿骡也可以被修理,修理基准费用为 60 矿 17 秒。(未验证)
  20. 开启自动修理的 SCV 在地堡/医疗艇里面可以修理同乘的其它机械单位,但不能修理搭乘的地堡/医疗艇本身。SCV 可以进地堡,SCV/坦克/寡妇雷/恶火/恶蝠/落地维京可以进医疗艇,这些单位可以仓内修理。
  21. 尽管雷神也是机械单位,但雷神需要独占一只医疗艇,没有仓位再给 SCV,无法实现“仓内修理”。
  22. 尽管雷神是挂在医疗艇下面的,但 SCV 却只能修理医疗艇,无法修理视觉上明明是挂在医疗艇下方的雷神 (づ ̄ 3 ̄)づ。这是智商问题。
  23. 技能优先级修理高于攻击,A 地面时如果附近有掉血机械单位会优先修理。
  24. SCV 可以修理星灵的机械单位,但不能修理星灵建筑。不能修理虫族的任何单位和建筑。
  25. 星灵机械单位包括:探机、追猎者、机械哨兵、不朽者、巨像、侦测器、折跃棱镜、凤凰、先知、虚空辉光舰、风暴战舰、航母、拦截机、母舰核心、母舰。
  26. 星灵护盾不能修理。
  27. 星灵的修理只以血量部分作为修理比例计算依据,因此修理星灵单位速度非常慢。例如侦测器 30 秒生产时间 40 血 20盾,则 SCV 每秒只修理 1.333 血。
  28. 航母的拦截机是个不可选中单位,但开启自动修理的 SCV 确实可以在飞过头顶的一瞬间修上那么两下。
  29. 尽管没有被修理能力,但星灵建筑的等离子护盾一定程度起到了类似修理的作用。等离子护盾在脱离战斗 10 秒后以每秒 2 点的速度恢复。
  30. 尽管没有被修理能力,但虫族建筑自有回血能力,速度为每秒 0.27 点。同时虫后拥有哺液技能,可以为建筑回血,消耗50能量,回125点血,瞬发,CD 1 秒。哺液同样可为单位回血。
  31. 女王哺液可以给友军生物单位回血,但不合算。虫族外只有火车侠是血量高于 125 的生物单位,为 135 血,是相对最合算的回血对象。其次是劫掠者 125 血。

Build[1]  建造/折跃/变异

  1. 任何建筑在开始建造的一瞬间有 10% 的血量,之后全部时间匀速地完成剩下90%。所以刚扔下的建筑靠少量兵并不容易打掉。
  2. 建造完成的建筑默认有 1 点的的重甲,人类可以升级(+2),但建造过程中护甲为 0 点,属性依然是重甲。建造过程中劫掠者一枪会造成 20 点伤害,建造完成后一枪 19 点。
  3. 所有建筑的建筑网格都分为 1×1、2×2、3×3、5×5 四种,其中,只有三族的主基地为 5×5 网格。只有感应塔和菌毯瘤为 1×1。
  4. 角对角相接的建筑中间可以穿过 1 体积单位的兵种。要堵路口需要错开一格。
  5. 人类的建筑在建造过程中,若 SCV 被击毁则会中断。
  6. 星灵建筑的建造过程不需要探机,虫族则会消耗掉工蜂,都不存在建造中断的情况。
  7. SCV 需要持续工作,因此还需要额外考虑损失的采集能力,每秒 0.7 矿。因此人族基地相当于需要 470 矿,为三族最贵。
  8. 虫族工蜂建造建筑后会消耗掉,需要补充相应数量的工蜂,相当于任何建筑都有 17 秒的采集能力损失,约 11.9 矿。
  9. 退掉正在建造的建筑返还 75% 的花费,采用的是“进 1 制”反还。比如对于一个 75 矿的精炼厂,理论上返还 75*75% =56.25 矿,实际上返还 57 矿。
  10. 建造过程中的星灵建筑同样有护盾,增长速度与血量同步。受攻击时先损耗护盾。
  11. 所有的星灵建筑的盾和血量最大值都相同。
  12. 星灵的建筑,除了星灵枢纽、吸纳舱、水晶塔以外,其它建筑都必须在能量场范围内开始建造,折跃棱镜的能量场也可以。只要开始建造了,在建造过程中能量场可以消失。(水晶塔被打,棱镜收起)。
  13. “在能量场内”指的是建造的建筑最中心点在能量场的圆弧范围内。也就是说,建筑边缘最多可以离开能量场略小于 1.5 格。
  14. 水晶塔提供半径为 6.5 的能量场,由于自身为 2×2 建筑,所以实际的横向到边缘长度为 5.5 格,可以造3个光子炮台。棱镜提供半径 3.75 的能量场。
  15. 所以两个相距 13 的水晶塔正好边缘相切,两者连线上可以放下一个 2×2 的建筑,但放不下一个 3×3 的建筑。(仔细思考“中心点必须在能量场内”的规则)。
  16. 没有能量场的建筑的生产/研发进度是冻结状态,重新供能以后进度条会继续,不重置。
  17. 虫族建筑,除了孵化场、萃取房以外,都必须完全地建造在菌毯上,这与星灵中心点覆盖的方式不一样。即使是处于行走状态的孢子爬虫和脊针爬虫,要重新扎根也必须在菌毯上。
  18. 虫族建筑都相对便宜,显然是因为要消耗工蜂,所以变异建筑的价格是减掉工蜂的价格的。气矿尤其明显。
  19. 但因此,取消正在建造的建筑,返还的是1只工蜂外加差价的 75%,因此虫族取消建造的成本比其它两族更低。以气矿为例,其它两族取消建造返还 58 矿,损失 27 矿。而虫族则是反还工蜂+19矿,只损失 6 矿。
  20. 这使得虫族退气矿成为一种战术和技巧。在初期偷人口赚一个农民(如果偷出的时间比采集一次的时间长就是赚的)、通过在对方家里造气矿,取消再造持续干扰对方运营发展等。
  21. 孵化场默认提供半径 12.5 的菌毯,由于自身是 5×5 的占位,所以实际到边缘是10格。可以造5 个 2×2 建筑。在画面质量较低时,菌毯边缘会更明显。
  22. 取消建造的孵化场会残留一个 3×3 的菌毯,手速快的话可以放一个其它建筑。当然,取消孵化场损失75矿。
  23. 虫族建筑因故失去菌毯滋润后,会以每秒 3 点的速度损失血量,再加上自身回血,最后加成损血速度为每秒 2.73 点。无论是在建的或者已经建完的都一样,孵化场和萃取房除外。处于行走状态的孢子爬虫和脊针爬虫也不受影响。
  24. 所有虫族的菌毯是共用的,即使是敌人的也可以,所以 zvz 可以在一开始就造个血池然后跑对方矿区造脊针爬虫。
  25. 人类的建筑附件也是共用的,即使是敌人的也可以,不过通常没人会跑对方家里打掉主建筑然后抢对方的附件用……( ̄△ ̄;)。如果是队友之间可能存在某种战术。
  26. 抢来的附件也可以成为“消灭所有建筑”的胜利条件。也就是敌方只剩下一个附件了,你飘个重工厂过去,一落地,胜利……
  27. 除了自动机炮,任何人类或者星灵建筑都不可以建造/降落在菌毯上。已经建成的建筑被菌毯蔓延包围不影响既有功能。这些建筑被摧毁后,原地同样已经被菌毯覆盖。
  28. 污染只能冻结出兵和研发升级,不能冻结建筑的建造和修理,包括人类指挥中心的升级。不能限制水晶塔能量场和光子炮台的活动。也不能限制建筑的瞬发技能,比如扫描和空投矿骡。
  29. 污染不能限制星灵的星空加速,不能限制菌毯肿瘤对菌毯的扩展,但却可以限制菌毯肿瘤的分裂。(待验证)
  30. 菌毯永远不覆盖瓦斯气泉。
  31. 菌毯的生长计算另述。

部分翻译自 http://wiki.teamliquid.net/starcraft2/Repair

* 该文写铁鸦两个召唤物的修理时间为 60 秒,根据我 50% 和 40% 血量的多次实验,认为实际上是 50 秒。