如何使总概率最大化?

时间:2019-02-03 14:38:28

标签: c++ math random probability maximize

我想在如下所示的随机选择游戏中最大化获胜的总概率,

我有n张彩票,在这n张彩票中,只有1张是幸运彩票,现在我有2种选择要么抽奖,要么要求主人从总彩票中删除一些X不幸的彩票,X必须是彩票的倍数k(可用)和X必须小于票证总数。

如果我画了一张不走运的门票,主人会在这堆门票中添加k张不走运的门票。

我们最多可以玩m步,每步都是以下其中之一

  1. 要么我们抽票
  2. 我们要么要求主人移除X张票(X是k的倍数)

我想最大化概率。

将总概率P / Q输出为P * Q ^(-1),其中Q是Q的模数倒数。

观察并玩游戏后,我认为只有按照以下方式玩游戏时,总机率才最大

  1. 我们采取的第一步是开票,获胜的概率为1 / n。

  2. 如果我们在第一步中抽出不幸的彩票,则会添加k张彩票,我们可以要求主人在第二步中移除k张彩票。

  3. 第三步,我们再次抽奖,现在中奖的可能性是
    ((n-1)/ n)*(1 / n)。

类似地,如果存在m个移动,我们可以得出结论,获胜的总概率为(1-((n-1)/ n)^ r),在其中我们可以找到r的值

n

例如: n = 3 k = 20 m = 3

总概率为1-(2/3)^ 2 = 5/9

n = 5 k = 7 m = 1

获胜的总概率为1/5

最终输出:

5 *(9)^(-1)%1000000007 = 555555560

1 *(5)^(-1)%1000000007 = 400000003

如果该游戏中还有其他获胜策略,请提供证明,而我也没有针对我的策略的证明,因此,如果您可以证明我的策略,我将很高兴拥有它以及伪码将为您提供帮助我继续。

我们再次将我们捡起的票再次放进堆中,因此在错了之后,我们得到n + k而不是n + k-1,并且还有n

编辑:我的策略证明

我们采取的每一步都有2种可能性

要么我们获得1 / n *(n-1)/ n,要么我们获得(n-1)/ n *(1 / n + k)+(n-1 / n)( (n + k-1)/ n + k)(1 / n + 2 * k)

现在求解完双方之后,我们得到等式1 / n的左手边,而右侧为(2 * n + 3 * k-1)/(((n + 2 * k)*(n + k)我发现RHS始终小于或等于RHS

因此,在进一步求解后,我得到L.H.S为2 *(k ^ 2),R.H.S为n ^ 2-n,给定n

因此证明。

请提供证据的反馈。

1 个答案:

答案 0 :(得分:1)

您的策略不正确。抽出不幸运的票证后,您会要求主人移除k张票证,但是如果您开始在完全相同的状态下玩,那么您会选择一张票证。这是没有道理的,因为游戏无法记住您以前的举动,因此,当前的状况应始终决定最佳选择。

P(n,m,k)为赢得 n 票,最大 m 步和 k ,具有最佳策略。

如果您选择一张票,则概率为 1 / n + P(n + k-1,m-1,k)*(n-1)/ n

如果不这样做,则概率为 P(n-k,m-1,k)

最佳选择是概率最大的选择,所以:

P(n,m,k)= max(1 / n + P(n + k-1,m-1,k)*(n-1)/ n,P(nk,m- 1,k))

由于可能存在重叠的子问题(即动态编程),因此可以通过备注来递归计算。