随机事件中的概率约束与样本约束

来源:互联网 发布:iphone闪存检测软件 编辑:程序博客网 时间:2024/06/14 12:20

关于上一篇 小样本大概率事件的正确处理方式 ,由于比较偏向于算法的实现,我收到了这样几个疑问:

  1. 分别判断样本内每个事件是否发生,和提前对样本内的事件发生频次进行预处理,这和样本大小有毛关系?
  2. 文末提到对样本进行预处理可以用在任意随机场合,那两种方式我该用哪种?
  3. 那个算法是针对01对立事件的,我一次随机可能出现三种互斥事件怎么弄?
  4. 弄这么复杂起个蛋用。。。

在回头看了看前一篇文章之后,我估计是因为“结果验证”木有给出直观的比较,所以说服力并不强。所以我在这里对传统随机方式和“我认为合理”的方式做一下结果对比。

首先,对于传统的“分别判断样本中每个事件是否发生”,我称之为概率约束;而“提前对样本内的事件发生频次进行预处理”,我称之为样本约束
然后,这次随机我使用三个互斥事件:从0,1,2三个数字中取一个,取出0的概率为20%,取出1的概率为30%,取出2的概率为50%。并且,我提高样本的大小到1000。
接着,为了让结果更加直观,我通过Excel做了一个表和曲线图。

对于概率约束,我的算法是这样的:(不需要解释吧)
这里写图片描述
对于样本约束,我的算法是这样的:(简单说明一下,这里是每10次随机作为一个小样本,约束里面的0出现2次,1出现3次,2出现5次,然后进行洗牌,这样重复了100次。由于是三个互斥事件,所以和上一篇文章中的01对立事件的算法有差别。)
这里写图片描述

概率约束的结果是这样的:
这里写图片描述
样本约束的结果是这样的:
这里写图片描述

相信这样的结果应该会更容易理解了吧。
概率约束随着样本数量的增加,概率会趋近于我们所期望的值,但是在样本数量并不大的时候,误差完全无法容忍(说实话,我做表之前也没想到1000个样本的误差也会如此之大)。而样本约束在总体样本数量是约束样本数量的倍数时,概率就会得到修正(样本数量为10的时候就已经约束到我们期望的概率了)。
或者直接从曲线的变化上来看,样本约束加速了 样本大小-事件概率 曲线的收敛

那这两种约束到底该如何取舍呢?毕竟样本约束无论从理解还是算法设计上,复杂度都要高出概率约束很多。
其实在我看来,算法虽然是由程序去实现,使用哪种算法也是由程序去决定,但是“20%的概率”“10次发生2次””20次发生4次”之间的区别,是策划有必要理解的。
当事件有很明显的间断性时(每周一次的开礼包,怪物死亡的随机掉落等),概率约束的误差并不会影响直观感受——因为事件独立性很强,单个样本并不能感受到事件概率的波动。而当事件有很明显的连续性时(攻击怪物出现暴击、丢失命中等),如果不使用样本约束,玩家可能会因为误差而对概率值产生怀疑——连续性事件玩家通常会关注小样本的统计值。
而对于使用样本约束算法,约束样本的大小也会对概率波动产生影响。10次发生2次意味着概率曲线的快速收敛和事件分布的低随机性,而20次发生4次则恰好相反,这个决策权在我看来应该交给数值策划,如果数值策划认为无所谓却又对概率约束的精确度不满意,我个人会在样本约束的算法中使用尽可能小的约束样本