• [原创]测试玻璃球抗摔程度


    问题:一座共100层的高楼,现需测试玻璃球的抗摔程度,即从哪层掉落玻璃球恰好摔碎,假设玻璃球在各楼层恰好掉落摔碎的几率相同,请设计方案,使实验次数尽可能少。

    解答:

    若用1颗玻璃球,则需从1层到100层逐层测试,因此平均测试次数为(1+2+3+...+100)/100=50.5,如此测试肯定不是最优方案。

    因此考虑用2颗玻璃球,第一颗玻璃球从低层到高层逐层测试,设序列为x1, x2, ..., xn. 当第一颗玻璃球在xi层掉落摔碎时,就用第二颗从xi-1+1层逐层向上测试,直到第xi-1层,因此共需要实验(i+xi-xi-1-1)次。故总的平均测试次数为:

    [(1+x1-1)+(2+x2-x1-1)+(3+x3-x2-1)+...+(n+xn-xn-1-1)]/n = (1+2+3+...+n-1+xn)/n = 100/n + n/2 -1/2 >= 2*(50)^(1/2)-1/2 ≈ 13.6  

    因此平均测试次数为14,那么为了使每次测试次数都不超过14,则令i+xi-xi-1-1=14 可得x1=14,x2=27,x3=39,...,x11=99,x12=100。

    故第一颗玻璃球测试楼层序列如上。

    若不限制使用玻璃球的个数,则可考虑使用二分法,这样2^x = 100,x=7,最多需要7次实验,当然最多也需要准备7颗玻璃球。

    如原创文章,转载请注明:转自http://www.cnblogs.com/xpowerlord/
  • 相关阅读:
    nodeJs学习-10 模板引擎 ejs语法案例
    nodeJs学习-09 模板引擎 jade、ejs
    nodeJs学习-08 cookie、session
    nodeJs学习-07 express、body-parser;链式操作next
    RedHat6.5-Linux安装telnet服务
    druid数据源配置
    rpm安装MySQL
    黎活明给程序员的忠告
    为什么要使用JS模板引擎
    Angularjs调用公共方法与共享数据
  • 原文地址:https://www.cnblogs.com/xpowerlord/p/3647554.html
Copyright © 2020-2023  润新知