如何赢得这个骰子概率游戏?

机器算法验证 可能性 数理统计 骰子
2022-03-23 15:52:46

游戏是猪的变种。以下是游戏的运作方式:

大约有20名球员。每一轮,都会掷出一个六面骰子。所有玩家都将该滚动号码添加到他们的“银行”中。但是,如果从第 3 轮开始掷出 2,则所有银行都设置回 0。在掷骰子之前,玩家可以选择坐下并将他们的银行添加到他们的分数中,并永久保留。游戏一直进行到总共重置 6 次分数,此时分数最高的玩家获胜。

每轮坐下来获得最高分的最佳机会是什么时候?

2个回答

这就是我的看法,但我承认我可能误解了这个游戏!

假设您当前的银行分数为 B,任何给定轮次的预期回报为:

E(return)=16(B)+16(1+3+4+5+6)
E(return)=16(19B)
因此,一旦您拥有 19 点的银行,最好退出而不是冒险。

我相信从长远来看,这将使您的平均分数最大化。但是,在游戏方面,有时事情比简单的优化要复杂得多。对于 2 人游戏,我想我会遵循上面分析的建议。然而,对于一个 20 人的游戏,很明显你需要一些运气,因为第 2 名是第一个失败者,你想给自己一个获得很高分数的机会,而不是试图避免一个很低的分数。直觉上,我预计这意味着你需要将你的运气推过 19 分,但我必须更加努力地思考如何为 n 人的游戏量化这一点。

运行模拟,我发现平均值确实在阈值 19 附近优化。但是,正如我也怀疑的那样,幸运游戏(平均值 + 2σ) 实际上在 29 或 30 左右进行了优化。因此,如果您需要击败其他 19 名玩家,请等到那时。

在此处输入图像描述

以下结果来自我在 R 中的模拟。

假设总共有 6 轮,前两次投掷总是在每轮中进行,并且在每轮之后(前 2 次)每个人都重置。

我将只为一个人模拟游戏,因为我们假设玩家独立玩。我将测试哪种策略表现更好,总是依靠第一次、第二次、第三次等等。

result=replicate(1e4,{
  bank=rep(0,20)
  for(i in 1:6){
    round_draws=sample(1:6,20,replace=T)
    first_two=which(round_draws[3:20]==2)[1]+2
    if(!is.na(first_two)){
      round_draws[first_two:20]=NA
    }
    new_bank=cumsum(round_draws)
    new_bank[is.na(new_bank)]=0
    bank=bank+new_bank
  }
  return(bank)
})

结果看起来像这样。

在此处输入图像描述

最好的结果(从长远来看,平均而言)是每 6 次投掷一次。