zoukankan      html  css  js  c++  java
  • (数学)波斯公主选驸马

    题目:

      波斯公主到了适婚年龄,要选驸马。候选男子100名,都是公主没有见过的。百人以随机顺序,从公主面前逐一经过。每当一位男子在公主面前经过时,公主要么选他为驸马,要么不选。如果选他,其余那些还没有登场的男子就都遣散回家,选驸马的活动也结束了。如果不选,当下这名男子就离开,也就是 pass 掉此人,下一人登场。被pass 掉的,公主不可以反悔再从选。规则是,公主必须在这百人中选出一人做驸马,也就是说,如果前99人公主都看不中的话,她必须选择第100名男子为驸马,不管他有多么丑陋。​​

      任务是,给公主设计选择方法,让她有最高概率选到百人中最英俊的男子为驸马。​​

    思路:

      说明一点是,没有任何选择方法能够保证公主一定选择到最帅的帅哥。对于任何选择方法,总存在某些出场的顺序,让公主与帅哥错过。所以,题目所问的,不是必胜的选法(因为不存在),而是概率最高的选法。

      先给出答案:先拒绝前面的100/e名男子(e为自然对数,2.718...,100/e约等于37),记住这37名男子最英俊的一个,接着在后面的男子中,找到第一个比前面37名中最英俊的还英俊的男子,即为驸马。如果没遇上,那只好选第100个男子。

      抽象为数学模型:即先拒绝掉k个人,然后在后面的人中找出更好的。

      理论推导:如何求出最优的k呢?

      对于某个固定的 k,如果最适合的人出现在了第 i 个位置(k < i ≤ n),要想让他有幸正好被 MM 选中,就必须得满足前 i-1 个人中的最好的人在前 k 个人里,这有 k/(i-1) 的可能。考虑所有可能的 i,我们便得到了试探前 k 个男生之后能选中最佳男生的总概率 P(k):


      用 x 来表示 k/n 的值,并且假设 n 充分大,则上述公式可以写成:


      对 -x · ln x 求导,并令这个导数为 0,可以解出 x 的最优值,它就是欧拉研究的神秘常数的倒数—— 1/e !

      这个结论可以通过37%法则模拟实验来测试一下有多大概率选中,有空再贴出代码。

    参考资料:

    http://www.e-future.com.cn/news_details.php?nid=1702

    http://songshuhui.net/archives/57722

      

           

  • 相关阅读:
    python编写规范
    我们分析了400位华语歌手的歌词,发现人们重点关注的人事物情
    外部厂商公开工具
    OSI七层与TCP/IP五层网络架构详解
    npm run dev--The 'mode' option has not been set, webpack will fallback to 'production' for this value
    webpack-dev-server --inline --progress --config build/webpack.dev.conf.js
    PPTV(pplive)_forap_1084_9993.exe 木马清除经历
    【转】【Nginx】Nginx 入门教程 + 常用配置解析
    【转】【Python】Python 中文编码报错
    【Centos】systemd入门教程
  • 原文地址:https://www.cnblogs.com/AndyJee/p/4966209.html
Copyright © 2011-2022 走看看