第一次出现连续结果面试问题
2017-04-23 18:13
267 查看
问题:机器人抛硬币,不规则硬币,连续抛,出现A面的概率2/3,出现B面的概率1/3,问第一次连续两次出现A面,期望抛的次数为多少?
思路1:做一个捆绑,连续两次出现A,即考察两次抛硬币结果AA,AB,BB.记抛硬币的次数为随机变量N,则分类考虑N的奇偶性。如果N为偶数,则N/2次前N/2-1都是从AB,BB中选,最后一次选AA;如果N为奇数,则倒数第三次必定是B,即前N-3/2次都是从AB,BB中选,倒数第三次选B,最后一次选AA
计算过程:
result = 0.0
for i in range(1,10):
result = result + (8*i+1)/15.0*4.0*(5**i)/(9**i)
print(result)
print(result)
结果:6.18,但是答案错了,为什么错了,还需要分析
思路2:分叉树递归方程法
根据树状结构和其中的递归关系列方程如下:
LTT = pT*(LT+1) + pH*(LTT+1)
LT = pT*1 + pH*(LTT+1)
其中pT和pH分别是掷出字和花的概率,即为2/3,1/3
结果:3.75
验证计算:
思路1:做一个捆绑,连续两次出现A,即考察两次抛硬币结果AA,AB,BB.记抛硬币的次数为随机变量N,则分类考虑N的奇偶性。如果N为偶数,则N/2次前N/2-1都是从AB,BB中选,最后一次选AA;如果N为奇数,则倒数第三次必定是B,即前N-3/2次都是从AB,BB中选,倒数第三次选B,最后一次选AA
计算过程:
result = 0.0
for i in range(1,10):
result = result + (8*i+1)/15.0*4.0*(5**i)/(9**i)
print(result)
print(result)
结果:6.18,但是答案错了,为什么错了,还需要分析
思路2:分叉树递归方程法
将LTT记为后续期望出现连续两个T的节点,其值即为所求。LT记为下一次投掷结果期望出现T的节点。
第一级(树根) | 第二级 | 第三级 |
---|---|---|
LTT | 掷T -> LT | 掷T -> 结束 |
. | . | 掷H -> LTT |
. | 掷H -> LTT | . |
LTT = pT*(LT+1) + pH*(LTT+1)
LT = pT*1 + pH*(LTT+1)
其中pT和pH分别是掷出字和花的概率,即为2/3,1/3
结果:3.75
验证计算:
# coding=utf-8 import random nIter = 2000000; nTotalTime = 0; for iter in range(0, nIter): times = 0 last = 0 while True: fa = random.uniform(0,3) times = times + 1 nLocate = 0 if fa < 2: nLocate = 1 #正面 else: nLocate = 2 #反面 if not(nLocate==1 and last==1): last = nLocate else: #连续两次为正面,记录抛掷次数 nTotalTime = nTotalTime + times break print(nTotalTime, nIter, nTotalTime/nIter)
相关文章推荐
- 面试中出现频率较高的英语问题及精彩回答
- Google搜索结果页面出现重大问题 满屏尽是恶意网
- 开源DIGG软件PBDigg2.0的修改(八):解决搜索文章结果出现代码的问题。
- 求一个字符串中连续出现次数最多的字串.[面试宝典14.5节]
- 一个C++复制构造函数例题在不同编译器上(xcode,CodeWarrior,GUN,VC6.0)出现结果不一致的问题
- 昨天第一次面试,结果还不错。
- 面试宝典:转换字符串格式为原来字符串里的字符+该字符连续出现的个数
- 第一次ADO.Net连接SQLserver测试时出现的问题-传智播客的ADO例子
- C#基础 面试中常出现的问题
- 【原创】求质数时出现的问题及结果办法
- Google搜索结果页面出现重大问题 满屏尽是恶意网
- 昨天参加一面试,结果考官问了这问题。当时没有答上来,汗颜的很啊,于是有了此篇文章.
- 第一次出差:有点迷糊,出现了很多问题,在此做一下备忘录
- 一个笔试面试经常问的问题——统计字符串中出现最多的字符及次数
- 数据量的问题是很多面试笔试中经常出现的问题
- 看到很多同学面试出现问题,这里提供一些资料
- 解决使用nvelocity时候template文件里面包含中文输出结果时候出现乱码的问题
- JavaMail、Commons Email发送邮件 出现结果后到的文件是Base64的问题的解决办法
- 一个C++复制构造函数在不同编译器上(xcode,linux终端,VC6.0)出现结果不一致的问题
- 软件开发面试可能出现的问题