【炉石传说】奥弹和精灵龙的故事
发布于 5 年前 作者 CarlosRen 4681 次浏览 来自 问答

1、问题:

炉石传说是暴雪出的一款卡牌对战类游戏,策略和博弈,卡组的组合,费用曲线等诸多要素会影响胜局,今天聊聊这两张卡:

untitled1.png untitled2.png

玩过的同学都知道,法力龙虽然不会被寒冰箭,英雄的小火球点掉,但是可以被奥弹biu死,那么问题来了:

** 假如对面场上只有法力龙(满血),法师一个奥弹清掉法力龙的概率是多少呢?**

2、上代码

var combat = {
	hero : 0,
	dragon : 0,
	hit : function(){
		if(this.dragon===2){
			this.hero++;//精灵龙只有两血,如果前两发奥弹打死了精灵龙,那么剩下一发必然打脸
		}else{
			var randomHit = Math.random();
			//The Math.random() function returns a floating-point, pseudo-random number in the range [0, 1)
			if(randomHit<0.5){
				this.dragon++;
			}
			else{
				this.hero++;
			}
		}
	},
	getDragon:function(){
		return this.dragon;
	},
	init:function(){
		this.dragon = 0;
		this.hero = 0;
	}
}
var count = 0;
for(var i=0;i<100000000;i++){
	combat.init(); //初始化战斗
	var x = 3; //一共三发
	while(x>0){
		combat.hit();
		x--;
	}
	if(combat.getDragon()===2){
		count++;
	}
	if(combat.getDragon()===3){
		console.log("error");//检查是否有错误
	}
}
console.log("dragon die "+count+" times");

dragon die 49998591 times dragon die 50011641 times dragon die 50001475 times dragon die 50006546 times dragon die 49991350 times

结果是50%应该没错了,但是宝宝有个问题,这个过程对吗?

11 回复

先向我的数学老师说声抱歉,简单的问题让我复杂化了。 按照楼主的思路我在纸上画了画,可以杀死精灵龙奥蛋分两种情况: 1.第一发未击中精灵龙 2.第一发击中精灵龙

先说第一种情况: 如果第一发未击中精灵龙,那么杀死精灵龙的概率是: 1/2 * 1/2 * 1/2 (未击中*击中*击中) 第二种情况: 第一发击中精灵龙,那么杀死精灵龙的概率: 1/2 * 1/2 + 1/2 * 1/2 * 1/2 (击中*击中 + 击中*未击中*击中) 那么杀死精灵龙的概率: 1/8 + 1/4 + 1/8 = 50%

本着严谨的原则,上述结果成立的先决条件是法师的hp要大于1。如果法师的hp=1,一旦被奥蛋击中,游戏会提前结束,至于法师hp = 1时的概率如何计算是非常复杂了。 先假设hp = 1 时的概率 为1/30 那么当 hp = 1时,如果要杀死精灵龙,则前两发必须命中精灵龙: 1/2 * 1/2 假设后的结果: 29/30 * 1/2 + 1/30 * 1/4 = 59 / 120 所以实际结果会比这个小一些。

  1. 前两发中,1/2 * 1/2
  2. 后两发中,1/2 * 1/2 * 1/2
  3. 一三中,1/2 * 1/2 * 1/2

结果:1/2 对否?

@ljnchn

人 1/2  - 人 1/2  - 人 1/2  === 1/8
人 1/2  - 人 1/2  - 龙 1/2  === 1/8
人 1/2  - 龙 1/2  - 人 1/2  === 1/8
人 1/2  - 龙 1/2  - 龙 1/2 === 1/8  √
龙 1/2  - 人 1/2  - 人 1/2 === 1/8
龙 1/2  - 人 1/2  - 龙 1/2 === 1/8  √
龙 1/2  - 龙 1/2              === 1/4  √

其实就是前两发打到龙的话,第三发奥弹就是必然事件了,概率变了 主要想跟大家讨论的是random的取值范围是[0,1) 也就是说对0.5这个分界判断 应该是<0.5 还是<=0.5 因为样本取很大的话,这点区别是看不出来的

竞技场中,假设对面一费跳精灵龙,二费我方手上有二五仔,出场炸死精灵龙概率呢? 7/27。(小学概率题,当我没问。。。)

@CarlosRen

前两发打到龙的话,第三发奥弹是必然事件

这点我想到了,但是刚刚觉得没影响,看来是想错了。 照你的图,一共有七种可能,三种可以打死精灵龙。 那最后的结果为什么不是3/7呢?

@CarlosRen 既然知道前2发都打中龙这是一个特殊情况, 那为什么不知道前2发都没打中龙,这也是个特殊情况。 为什么? 因为前2发都没打中,那就不用再考虑,因为龙一定不会死,只是剩1血还是2血的问题了,但我们求的概率是龙会不会死,所以与这个无关。 两种特殊情况的概率都是1/4,还有其他4种情况概率都是1/8 即如下: 一共6种情况:(中指的是命中龙,不则对立) 中中*(第3次中没中已经没必要知道了,因为龙已经死了) 1/4 中不中 1/8 中不不 1/8 不中不 1/8 不中中 1/8 不不*(第3次中没中也已经没必要知道了,因为龙一定不会死)1/4

@Jealee3000 龙的死亡会导致第三发奥弹变为必然事件改变其发生概率,而前两发打脸并不会导致第三发的判定结果

@CarlosRen 但前两发打脸导致了第三发的判定结果与龙是否死亡无关了。

@Jealee3000 第三发的概率变了吗?跟12两发有区别吗?需要单独讨论吗?

@CarlosRen 第三发的概率没变,但第三发的概率是多少已经没有意义了。如果前两发是中中或者不不,那么第3发的概率就没必要知道了。因为它对精灵龙是否死亡造成不了影响了。我这只是提供一种思路而已。

我操,这是个神贴啊!

回到顶部