zoukankan      html  css  js  c++  java
  • 【博弈论】关于蒙蒂霍尔问题(三门问题)的讨论

    洛谷期中考试的第三题,思维型非常强,其来源就是美国的三门问题,又称:蒙蒂霍尔问题或山车问题。

    三门问题的原型是这样的:

    「假设你正在参加一个游戏节目,你被要求在三扇门中选择一扇:
    其中一扇后面有一辆车;其余两扇后面则是山羊。
    你选择了一道门,假设是一号门,然后知道门后面有什么的主持人,
    开启了另一扇后面有山羊的门,假设是三号门。
    他然后问你:“你想选择二号门吗?”转换你的选择对你来说是一种优势吗?」

    如果是按照人的【直觉】的话,肯定是每个门有车的概率都是1/3啊,所以换不换都一样。

    没错,我一开始也是这么想的,但是如果是这样,那为什么还要把这种题放到NOIP的提高组里。实际上,上面的那种【直觉】是错误的,完全错误的!

    再推了一大张打草纸后,发现对于这个问题,每次当主持人告诉你其中的一个错误选项后,你做出的觉得必须要换,换对你来说是一种优势。

    我们可以这么开看待这个问题:

    1.当前选择的那个门,有汽车的概率是33%,另外两个门有汽车的概率是66%。 【到这里没问题吧,神奇的在下面】

    2.主持人告诉你另外两个门中有一个门没有汽车,那那个门就可以扔掉了,那剩下的那个门,拥有汽车的概率就66%。【是不是?是不是这样看,转换是有优势的!】


    接下来,对于该问题进行推广,推广到OI中:

    题目描述

    Bob 正在考试,他遇到了一个奇怪的选择题:这个选择题共有 n个选项,其中只有一个选项是正确的。他完全不会做这题,所以只能靠蒙。

    蒙这道题分为 n−2n轮,在第 1 轮开始之前,Bob 会在这 n 个选项中随机蒙一项,之后的每轮流程如下:首先,Alice 会过来帮他排除一个选项,由于 Alice 事先知道答案,所以她会在现有的除正确的那一项和 Bob 正在选的那一项外的选项里,随机删去一个。之后,Bob 可以选择是否更换自己蒙的选项,如果更换,则随机更换到除正在选的那一项之外的任意一项。

    Bob 在这 n−2n  轮中,由于和 Alice 达成的神秘协定,需要恰好更换 kkk 次选项。他想知道,如何更换,使得自己蒙对的概率最大,输出这个概率。为了方便,你需要输出这个概率的分数形式在模 109+710^9 + 7 意义下的结果。

    前k-1次更换选项,最后1次更换选项的机会要留到最后。可以推出递归式,然后解答即可。

    代码实现:

    #include <bits/stdc++.h>
    using namespace std;
    const int MAXN = 100005;
    const int MOD = (int)1e9 + 7;
    int fexp(int a, int b) {
      int res = 1;
      for(int i = 1; i <= b; i <<= 1) {
        if(i & b) res = 1LL * res * a % MOD;
        a = 1LL * a * a % MOD;
      }
      return res;
    }
    
    int inv(int x) {
      return fexp(x, MOD - 2);
    }
    
    int f[MAXN], g[MAXN];
    int main() {
      int n, k;
      scanf("%d %d", &n, &k);
      if(k == 0) {
        printf("%lld
    ", 1LL * inv(n) % MOD);
      } else if(k == 1) {
        printf("%lld
    ", 1LL * (n - 1) * inv(n) % MOD);
      } else {
        puts("GG");
      }
      return 0;
    }
  • 相关阅读:
    .NET数据库编程求索之路11.一些思考
    VMware Workstation安装使用手记
    VS2010无法保存项目文件(.csprj)的问题解决方法
    【转】VC++/MFC(VC6)开发技术精品学习资料下载汇总 (2011.3.10更新)
    .NET数据库编程求索之路9.使用EF实现
    oracle11g新特性:闪回数据归档(Flashback Data Archive)#ocp试验#
    ORACLE口令文件验证与操作系统验证|转|
    闪回flashback#ocp试验#
    expdp数据泵导出操作
    手动模式下热备份的不完全恢复#OCP试验#
  • 原文地址:https://www.cnblogs.com/virtualman/p/9566955.html
Copyright © 2011-2022 走看看