【发布时间】:2019-06-27 11:20:51
【问题描述】:
我想最大化在随机选择游戏中获胜的总概率,如下所示,
我有n张彩票,其中只有1张是幸运票,现在我有2个选项,要么抽一张,要么让主人从总票中删除一些X个不幸的票,X必须是的倍数k(可用)和 X 必须小于票的总数。
如果我抽到一个倒霉的票,主人会在一堆票中添加k张倒霉的票。
我们最多可以玩 m 个动作,每个动作都是以下之一
- 我们要么开票
- 我们要么要求 master 移除 X 个票证(X 是 k 的倍数)
我想最大化概率。
并将总概率 P/Q 输出为 P*Q^(-1),其中 Q 是 Q 的模逆。
观察和玩游戏后,我认为只有按照以下方式玩游戏时,总概率才会最大
第一步,我们开一张票,中奖概率为 1/n。
如果我们在第一步中抽到一张不幸的票,则添加 k 票,我们可以要求大师在第二步中删除 k 票。
在第三步中,我们再次抽奖,现在中奖的概率是
((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 编辑:我的策略证明 我们采取的每一步都有两种可能性 要么获得 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
因此证明。 请为证明提供反馈。
【问题讨论】:
-
请向我们展示您迄今为止尝试过的代码,并解释为什么它没有达到您的预期。
标签: c++ math random probability maximize