您正在浏览:主页 > 烈焰公益服 >
作者:烈焰私服发布网 来源:http://www.whza.cn 时间:2018-03-22 19:47
如果对方场上只有一只精灵龙,那么你使用奥术飞弹打死它的概率有多大? 这应该是炉石史上最经典的数学问题,被争议多年后,大家都知道了这个答案是50%。 而最近,在果壳网的问答板块里,又有玩家“宇宙第一统治者”开始质疑50%这个答案的合理性,让我们来看看吧! 问题原文 我觉得这题精灵龙不简单,编程得到的结果匪夷所思,接近49.93%但是不到50%。求助大神! C++代码奉上(计算精灵龙死亡概率),编程非常渣。 #include #include #include #include int aa=30; int bb=2; void er(); void er() { int ll=rand()%2; if(ll==0) { aa=aa-1; return ; } if(ll==1) { bb=bb-1; return ; } } void sandan(); void sandan() { if(bb0) { er(); return; } } void main() { srand(time(NULL)); int ss; int qq=0,jj=0; while(jj 结果图,测试结果并不是50% 回答精选 果壳网友饭小盆的回答 奥蛋每次攻击都是独立判定的,但是对于这个特定模型来说,只有一种情况下,概率会有不同。。。那就是当前两次伤害已经打死精灵龙,最后一次就只能打脸了。。。 用文字表示的话,打脸是0,精灵龙是1 A000 B001 C010 D011 E100 F101 G110 前面6种都是12.5%的概率出现,最后一种则是25%,那么统计一下出现两次1的情况,就是D、F和G,其中D和F都是12.5%的概率,G是25%,加起来一共50% 如果你采用多次迭代的方法进行统计,那么实际得到的结果跟理论计算确实会有一定的差距。。不妨试试把实验次数提高一些。。。 再附个二叉树的图,省略了根节点 另外给你说个奇怪的事。 以前山口山5.4的PTR上进行过一个测试,武器战把精通弄成100%(精通效果是任何攻击都有几率造成一次额外伤害,伤害数值固定,精通本身不会触发精通),那么也就是说,我在一次实验中,其它伤害的攻击次数和触发的精通次数应该是一样的。。。 然而实际结果并不是这样。攻击了500多次。精通触发数量比其他攻击少了几十次。具体原因未知。 果壳网友junglerubik的回答 你们啊,一堆答案都没答到要点。 楼主其实就是进行了一次蒙特卡洛实验。 而monte carlo出来的数字是有一个置信区间的。 假设第i次随机实验得到的结果为 (根据题意 就是精灵龙死了没有)。 是一个随机变量,0表示死了,1表示没死,它的分布根据其他楼的计算我们是知道的。 p( =0)=0.5 p( =1)=0.5 可以得知 的均值是0,5,方差也是0.5。 根据大数法则,重复实验n=次之后。 死亡次数百分比 会服从正态分布,其均值为0.5,但是方差变成 此时我们进行一个假设检验,原假设H0为y=0.5 设置信度为5%,则y有95%的可能性落在一个以0.5为中心的区间 区间的上界可以根据下式算出来 1.96是标准正态分布0.025分位数。 下界只要把1.96换成-1.96。 最后算出来的区间是[0.49956 , 0.50044]。 所以说我们有95%的信心认为精灵龙的死亡百分比会处于以上区间。 如果把1.96换成2.58,那么我们就有99%的信心认为y会落在[0.49942,0.50058]之间。 而楼主算出来的结果是0.4993。 如果不是楼主遇到了小概率事件的话。 那么就可以有99%的信心认为原假设是错的,即y不等于0.5, 恭喜楼主,得到了1%水平上的统计显著。 当然更有可能的是,楼主程序写错了。 比如没有初始化随机seed。 果壳网友方弦与CyanoHao的回答 就是50%,除非有什么别的奇怪的分配方法。 做一次实验得到不足或者超过50%都是比较正常的,毕竟有随机性,不会正好是50% 楼主程序模拟的结果不同应该是 VC 随机库的问题。我用 GCC / Glibc 模拟的结果就更接近 50%,大于或小于 50% 都会出现。
<<上一篇:《斗战神》巨型灵猴雕像制作过程揭秘 >>
<<下一篇:《魔界村》国服或3月底首测 中韩版本大对比 >>