一个概率题:54张扑克牌,除去两张大小王剩下52张扑克牌。问红桃A和黑桃A同时被一个人拿到的概率是多少?
当前面试中各大名企经常出现各种各样的概率类面试题。究其原因,我觉得是概率型面试题可以综合考查面试者的思维能力、应变能力、数学能力。在这里对各种类型的概率型题目进行了收集和总结,希望在自我总结的同时对大家有所帮助。
方法比较简单,基本思想是每次随机取一个数,然后把它交换到最后的位置。然后对前(n-1)个数使用递归的算法。
递归实现:
非递归实现:
注:此处假设rand()的返回结果远远大于n。
这种题目一看似乎答案就是1/2,但其实认真细想并没有那么简单。
给所有的抛硬币操作从1开始编号,显然先手者只可能在奇数(1,3,5,7…)次抛硬币得到苹果,而后手只可能在偶数次(2,4,6,8…)抛硬币得到苹果。设先手者得到苹果的概率为p,第1次抛硬币得到苹果的概率为1/2,在第3次(3,5,7…)以后得到苹果的概率为p/4(这是因为这种只有在第1次和第2次抛硬币都没有抛到正面(概率为1/4=1/2*1/2)的时候才有可能发生,而且此时先手者在此面临和开始相同的局面)。所以可以列出等式p=1/2+p/4,p=2/3。
现在答案已经很明确了,所以大家平时要注意不要这样被人骗了,当然也不能去骗别人,哈哈~
//假设从-n这n个数中生成m个不重复的数,且n小于int的表示范围
//总体思想是一开始每个数被选中的概率是m/n,于是随机一个数模n如果余数小于m则输出该数,同时m减
//否则继续扫描,以后的每个数被选中的概率都是m/(n-i)
(wiki关于随机数的介绍http://en.wikipedia.org/wiki/Mersenne_twister)
解答1:
54张牌分成3等份,共有M=(C54取18)*(C36取18)*(C18取18)种分法。
其中大小王在同一份的分法有N=(C3取1)*(C52取16)*(C36取18)*(C18取18)种。
因此所求概率为P=N /M=17/53。
解答2:
不妨记三份为A、B、C份。大小王之一肯定在某一份中,不妨假定在A份中,概率为1/3。然后A份只有17张牌中可能含有另一张王,而B份、C份则各有18张牌可能含有另一张王,因此A份中含有另一张王的概率是17/(17+18+18)=17/53。
也因此可知,A份中同时含有大小王的概率为1/3 * 17/53。
题目问的是出现在同一份中的概率,因此所求概率为3*(1/3 * 17/53)=17/53。
7、A和B2人投硬币,正面A得1元,反面B得一元.起始时A有1元,B有100元.
游戏持续进行,直到其中1人破产才终止.
问:
1.如果硬币正反概率相同,游戏的期待长度(expected duration)是几次投掷?
2.如果硬币是不公正的,正面概率为P,反面概率为Q.(P+Q=1), 那么游戏的期待长度(expectedduration)是几次投掷?
答案还没整理
8、完美2011.10.16笔试题:2D平面上有一个三角形ABC,如何从这个三角形内部随机取一个点,且使得在三角形内部任何点被选取的概率相同。
在二维坐标系中可以用坐标(x,y)来表示图形中的一个点。如下图只要能够在各个带双向箭头的图之间的点能够建立一一映射即可。如把一个长方形(如正方形)的点映射到另一个长方形的点只要把坐标做相应的放大缩小即可。如把长方形的点映射到一个直角三角形,只要将长方形右上部份的三角形的点映射到对称的左下角的三角形的点即可。而直角三角形映射到一边平行于x轴的三角形的映射只要做x轴相应的偏移即可。而任意三角形可以分割成两个其中有一边平行于x轴的三角形。说的不是很清楚,具体的映射方法可以认真思考并写出公式。
9、平均要取多少个(0,1)中的随机数才能让和超过1。答案: e 次, 其中e是自然对数的底
10、编程之美:金刚坐飞机问题
大家都在排队上飞机,然后金刚来了,他也有票,但是插队第一个上了飞机,随便找了个座位坐下了,其余人的策略是:
如果自己票上写的座位没被占就按照座位坐,被占了就变身成金刚,随便找地儿坐。问第i个人坐在自己座位的概率是多少?
1..n一共n个座位,为了方便计算起见,我们做一个变换
变换1:金刚的票上的座位是最后一个,也就是第n个,其余人的票和座位再按照原先的顺序排列成1..n-1。
这样并不影响最终的概率,因为如果
1)金刚坐在自己的位置上,那么大家同样都是肯定坐在自己的位置上。
2)如果金刚坐在第i个位置(非他票上的座位)上,那么前i-1个人会坐在自己的位置上,与变换前相同,而第i个人肯定不会坐在自己的位置上,他会在变换前的金刚的座位再加上i+1..n的集合中随机挑一个座位,这也有变换前相同,他挑的座位对于后面人的影响也是与变换前相同的。
设F(i,n)为新的n个座位的排列中第i个人坐到自己位置上的概率,那么旧排列中第i个人坐到自己位置的概率就是
F(i,n) i
F(i-1,n) i>j;
j为金刚票上的座位
那么我们现在来计算F(i,n),后面的讨论全部基于变换后的排列。
对于乘客i,金刚的选择会造成3种情况,假设金刚选择的是j,分别为i
如果i
如果i=j,概率为0
如果i>j,那么前j-1个人肯定坐在自己的位置上,而第j个人就变身成了金刚,这样可以看做他就是金刚,他原来的座位就是n。
变换2:前j-1个人是打酱油的,跟后面的事件无关了,因为金刚在j上,所以第j个人变成了金刚2,他的票号是最后一个,j+1..n-1号乘客成了新的受害者,将j+1..n-1从1开始重新编号,座位数变成n-j
故第i个人坐在原来座位的概率为F(i-j,n-j)
所以概率为
综上
有
最后的结果是
F(i,n) i
F(i-1,n) i>j;
j为金刚票上的座位
转载:http://blog.csdn.NET/beiyeqingteng
该问题包含两个子问题:
子问题1:给你一个骰子,你扔到几,机器将会给你相应的金钱。比如,你扔到6,机器会返回你6块钱,你扔到1,机器会返回你1块钱。请问,你愿意最多花多少钱玩一次?
子问题2:在子问题1里,你只能扔一次,现在呢,可以给你两次机会,但是你自己也可以选择只扔一次。但返回的钱以最后一次为准。比如,第一次你扔了6,你把第二次机会就放弃了,这样机器会返给你6块钱。但是,假设你第一次扔了3,你如果对这一次不满意,打算再扔一次,如果你第二次扔到了2,那么你最后只能得到2块钱,如果第二次扔到5,你最后会得到5块钱。请问,在这种条件下,你愿意最多花多少钱玩一次?
分析:
对于子问题1,非常简单,本质上是求数学期望。因为骰子每一面被扔到的概率是一样的,即 1/6. 所以,最后期望值是 1 * 1/6 + 2 * 1/6 + ... + 6 * 1/6 = 3.5. 也就是说,假设你玩无穷次,平均下来,机器会返回给你的钱是 3.5. 所以,如果你头脑清醒的话,你应该不会花超过3.5去玩一次。
对于子问题2,解答起来是有困难的。因为这题里面有一个选择的问题:你可以只扔一次,或者选择扔两次。所以不容易去获得每个值的概率(因为我们不知道到底扔不扔第二次)。但是,如果有了子问题1的答案,其实对于决定是否扔第二次还是有根据的,原因如下:
如果你第一次扔到了1,或者2,或者3,你一定会扔第二次。为什么(问题的关键)?因为我们在扔第二次的时候,它的期望收益是 3.5。同理,如果你第一次扔到了4,5,6,你不会选择扔第二次,因为你知道下一次的期望收益是 3.5,比你目前的收益会小。有了这样的分析,问题就可以迎刃而解了。
解答:
因为骰子总共6面。第一次扔到4, 5, 6 其中之一的概率是 1/2, 那么选择扔第二次的概率也是1/2。在第一次扔到4,5,6其中之一这个事件里,平均收益是4* 1/3 + 5 * 1/3 + 6* 1/3 = 5. 在第二次扔的时候,平均收益是 3.5(子问题1的答案)。所以最后总的收益是 5 * 1/2 + 3.5 * 1/2 = 4.25。
在笔记题中概率相关的数学题,也有部分编程题,出现的还是挺多的。概率在生活中的应用较多,同时也可以综合考查面试者的思维能力、应变能力、数学能力。在这里整理了一些概率相关的笔试题和大家分享,此文不涉及编程题,都是一些和生活相关且很有趣的概率题。所有的分析都和背景颜色设置一样了,大家先思考,然后选中就可以看到分析了。
假设你参加了一个游戏节目,现在要从三个密封的箱子中选择一个。其中两个箱子是空的,另一个箱子里面有大奖(你偶像的签名^^)。你并不知道奖在哪一个箱子里,但主持人知道。游戏节目的主持人先要你选择一个箱子,接着他把你没有选的空箱子打开,以证明它是空的。最后主持人给你换箱子的机会,你可以把你所选择的箱子换成另一个没有打开的箱子。此时你该不该换箱子?
分析:
要相信直觉。你当然应该换箱子!我们把三个箱子编号A,B,C,并假设你选的是A箱。显然奖品在A里的概率是1/3,在B或C里的概率是2/3。B和C可能有一个是空的,也可能两个都是空的。因此,当你选择了A箱后,主持人很可能会打开B箱或C箱,以显示里面是空的。在这种情况下,主持人的举动并不会影响奖品在A箱里面的机会。我们假设主持人打开了B箱,以告诉你它是空的。现在A箱有奖品的概率还是1/3,B箱里面有奖品的概率是0,因此C箱里面有奖品的概率是2/3。在这种情况下,你应该换到C箱,因为它使你赢的机会提高了1倍!
题目2
分析:
我首先想到的就是把 第一次抛到正面的概率 + 第二次抛到的概率 + …..+无穷多次,当然后面的概率几乎为0了。 结果就是 P = 1/2 + 1/8 + 1/32+ …… 最后的结果就是 P = 2/3 . 这个计算也不难,其实就是等比数列,比为1/4. 简单的无穷级数 (1/2) / (1-1/4) = 2/3. 1/(1-x)^2=1+2x+3x^2+4x^3+5x^4+… (-1
还有一个别人的分析:给所有的抛硬币操作从1开始编号,显然先手者只可能在奇数(1,3,5,7…)次抛硬币得到苹果,而后手只可能在偶数次(2,4,6,8…)抛硬币得到苹果。设先手者得到苹果的概率为p,第1次抛硬币得到苹果的概率为1/2,在第3次(3,5,7…)以后得到苹果的概率为p/4(这是因为这种只有在第1次和第2次抛硬币都没有抛到正面(概率为1/4=1/2*1/2)的时候才有可能发生,而且此时先手者在此面临和开始相同的局面)。所以可以列出等式p=1/2+p/4,p=2/3。
分析:
世界上每十万人中就有一人是艾滋病患者。艾滋病的检测目前已经很准确,但并非万无一失。它的检测准确率是99%,假设你刚去做完艾滋病检验,得到的了检测报告,结果….是阳性!你会绝望或昏倒吗?或者说,你会担心到什么程度?
分析:
你大可不必那么担心,因为你几乎可以确定没有得艾滋病。什么?检测是阳性还几乎可以确定没有艾滋病?!是的,为了说明这一点,假设有100万人和你做了同样的检验。在这100万人中,得病的会有10个,没有得病的有999990个。当这些人接受检验时,9~10个人患有艾滋病的人会呈现阳性反应,另外999990个没有得病的人则会有1%出现错误的阳性反应,换算成人数大概是1万人。也就是说,大约10000个阳性诊断中,实际只有10个左右是真正患者。因此,绝大多数所呈阳性的反应都是误诊。当你得到阳性的检测结果时,真正得艾滋病的机会大概只有千分之一。(当然,如果你在检测之前做了很可能感染艾滋病的事,那就另当别论了)
题目5
有一对夫妇,先后生了两个孩子,其中一个孩子是女孩,问另一个孩子是男孩的概率是多大?
答案是2/3.两个孩子的性别有以下四种可能:(男男)(男女)(女男)(女女),其中一个是女孩,就排除了(男男),还剩三种情况。其中另一个是男孩的占了两种,2/3. 之所以答案不是1/2是因为女孩到底是第一个生的还是第二个生的是不确定的。
题目6
一个国家人们只想要男孩,每个家庭都会一直要孩子,只到他们得到一个男孩。如果生的是女孩,他们就会再生一个。如果生了男孩,就不再生了。那么,这个国家里男女比例如何?
分析:
一开始想当然的以为男多女少,毕竟都想要男孩。但是注意这句话“如果生了男孩,就不再生了”,一个家庭可能有多个女孩,只有一个男孩。再仔细分析,我们来计算期望值,只用计算一个家庭就行了。设一个家庭男孩个数的期望值为S1,女孩为S2.
根据题目条件,男孩的个数期望值S1=1这个是不用计算了。主要计算S2
一个家庭的孩子数量可以为:1,2,3,4,5….. 对应的的男女分布为: “男”,”女男”,”女女男”,”女女女男”,”女女女女男”…
对应的概率分布为 1/2, 1/4, 1/8, 1/16, 1/32 。其中女孩的个数分别为 0,1,2,3,4……
因此 S2=0*1/2 + 1*1/4 + 2*1/8 + 3*1/16 + 4*1/32 + ………
可以按照题目2用级数求,也可以用错位相减法:S2=1/4+2/8+3/16+4/32+… 两边乘以2,得: 2*S2=1/2+2/4+3/8+4/16+5/32+..
两个式子相减得 S2=1/2+1/4+1/8+1/16+1/32+…=1. 所以期望值都为1,男女比例是一样的。
转载:http://blog.csdn.net/cmonkey_cfj/article/details/45581325
一个桶里面有白球、黑球各100个,现在按下述规则取球:
- i 、每次从桶里面拿出来两个球;
- ii、如果取出的是两个同色的求,就再放入一个黑球;
- iii、如果取出的是两个异色的求,就再放入一个白球。
问:最后桶里面只剩下一个黑球的概率是多少?
答:
动态规划,令f[i,j]表示有i个白球,j个黑球的概率。
已知f[100,100] = 1, 求f[0,1]。
拿到两个白球: f[i-2,j+1] = i/(i+j) * (i-1)/(i+j-1) * f[i,j]
拿到两个黑球: f[i, j-1] = j/(i+j) * (j-1)/(i+j-1) * f[i,j]
拿到一黑一白: f[i, j-1] =2 * i/(i+j) * j/(i+j-1) * f[i,j]
10个人出去玩,集合时间有10分钟,每个人都在该时间内到达,概率均匀分布,彼此独立,那么最后一个人最有可能到达的时间是?
答:
遇到这种想不明白,最好的方法就是枚举。
若最后一个人在10分钟到达(概率1/10),其他人也都已经到达了(概率是1),总概率是 19 * (1/10)
若最后一个人在9分钟到达(概率1/10),其他人到达的概率是 (9/10)9 ,总概率是 (9/10)9 * (1/10)
依此类推。可见概率最大的是第10分钟。
原文引自此处
已知随机数生成函数f(),返回0的概率是60%,返回1的概率是40%。根据f()求随机数函数g(),使返回0和1的概率是50%,不能用已有的随机生成库函数。
答:
调用f()两次即可,会出现4种结果(0,0), (0,1), (1,0), (1,1),其中出现(0,1), (1,0)的概率是一样的,可以构造出等概率事件,比如出现(0,1)可返回0,出现(1,0)可返回1,如果出现其他两种情况则舍掉重新调用。
原文引自此处
给定rand5(),实现一个方法rand7()。也即,给定一个产生0到4(含)随机数方法,编写一个产生0到6(含)随机数的方法。
答:
随机数函数的关键是确保产生每一个数的的概率相等。我们可用通过5 * rand5() + rand5()产生[0:24],舍弃[21:24],最后除以7取余数,则可得到概率相等的[0:6]的数值。
原文引自此处
100个人排队,每个人只能看到自己之前的人的帽子的颜色(假设只有黑白两色),每个人都得猜自己帽子的颜色,只能说一次,说错就死掉,别人可以听到之前的人的答案以及是否死掉。请问用什么策略说死掉的人最少。
答:
假设只有3个人,假设ture = 白,false = 黑,用这个公式x3 = (x1 == x2),用人话就是1和2的帽子颜色一样的话就说白,不一样的话就说黑。这个策略第一个人死的概率是1/2,剩下的两个都不会死。
推广到4个人,也就是x4 = (x3 == (x1 == x2)),照理可以推广到100人。但问题就是人很难判断,只能靠计算机来算。
另一个解题方法:“最后一个人看一下前面黑帽子的个数是奇数还是偶数,比如约定奇数说黑,偶数说白。这样前面的人都可以推断出来正确的结果。”
54张牌,平均分成三堆,大小王在同一堆的概率?
答:
C1652∗C1836∗C1818/A22C1854∗C1836∗C1818/A33=17/53
或者可以这么想。先平均分三堆,大王在第一堆的概率是1/3, 小王在剩下的53张牌中,有17/53的概率和大王同一堆。依此类推,大王还可能在2,3堆,因此
1/3∗17/53∗3=17/53
买饮料,三个瓶盖可以换一瓶,请问要买100瓶饮料,最少需要买多少瓶?
答:
设要买x瓶。
x+x/3>=100
对么?小心!x/3瓶如果满3瓶还可以再换的,想象某人堵在小卖部门口狂开瓶。因此应该是
x+x/3+x/9+...+x/3n>=100
n=log3x
x(1−1/3n)/(1−1/3)>=100
x(1−1/x)>=200/3
x=68
不过我返回去算了下, 发现 x=68 只能买99瓶…毕竟算的时候当 x 是实数了,因此还是再返回来推一下的靠谱, x=69 。
有一个很大很大的输入流,大到没有存储器可以将其存储下来,而且只输入一次,如何从这个输入流中等概率随机取得m个记录。
答:
如果可以输入两次,那就可以统计出总数N, 再随机0到N-1数,判个重。但是这里只能输入一次,这里给出两种方法。
第一种。在输入的过程中,给每个记录一个[0,1]的随机数,最后取随机数最大的前m个记录。可以用m大的小根堆来维护。
第二种,蓄水池抽样 或 reservoir sample。假设输入到第n个记录了,以m/n的概率取该数,如果取中则随机替换掉原来取中的m个记录中的一个。初始时,选中前m个记录。乍一看好像不靠谱,一证明就服了。证明也很简单。
假设n-1时成立,即前n-1个记录,均以m/(n-1)的概率来判断是否选中。我们要证明,输入第n个记录后,前n个记录均以m/n的概率来判断是否选中。
对于第n个记录,以m/n的概率选择它,ok,满足要求。现在来看剩下的前n-1个记录。对于在前n-1记录中被选中的第i个记录,当前保持被选中的可能,要么是第n个记录没有被选中 (1-m/n) * (m/(n-1)),要么是第n个记录选中了但是i没有被替换掉 m/n * (m-1)/m * m/(n-1),两者相加正好等于m/n,就是这么酷。
此外还有扩展版,以不同权重被选中,参考此文
在一条高速公路上,在30分钟内看到一辆汽车的可能性是0.95,那么在10分钟内看到一辆车的概率是多少?(假设过车的概率是恒定的)
答:
记10分钟内看到车的概率为 p . 那么30分钟都没看到车的概率是 (1−p)3=1−0.95=0.05
所以 p=1−0.051/3
你和朋友去参加一个晚会,带你和朋友在内,共有10人。你的朋友和你打赌,你找到一位和你同一天生日的,你就得到1美元,他找到的任何一个和你生日不同的人,他得到2美元。你会打这个赌吗?
答:
题目描述有些微妙,这里姑且这么理解,你找到一个相同生日的就得1美元,找到两个2美元,依次类推。他找到一个和你生日不同的得2美元,找到多少人都是2美元。
假设一年365天,大家都是同一年出生(同龄人嘛)。他拿到钱的期望是 2∗(1−(1/365)10) . 你拿到1美元的概率是 C1101/365(364/365)9 , 2美元的概率是 C210(1/365)2(364/365)7 …这是二项分布嘛,期望是 np=10∗1/365=10/365 . 看过来对方那个数更大,所以不能赌。
百度的一个面试题目:
.已知一随机发生器,产生0的概率是p,产生1的概率是1-p,现在要你构造一个发生器,
使得它构造0和1的概率均为1/2;构造一个发生器,使得它构造1、2、3的概率均为1/3;…,
构造一个发生器,使得它构造1、2、3、…n的概率均为1/n,要求复杂度最低。
初看确实有点头晕,也没什么思路。但是仔细想想为什么生成0和1的概率均为1/2,我们可以看成是生成0和1的概率是均等的。这样想之后,似乎就没那么不好理解了。
原始的随机数生成器,生成0 的概率为p,生成1的概率为1-p,那么怎么构造才能使得生成0和1的概率相等呢。或者说有两个独立的事件的概率是相等呢?
这样来做一下,让该随机数生成器生成两个数,那么序列是00,01,10,11概率分别为 p*p,p(1-p),(1-p)p,(1-p)*(1-p)
很明显,这四种情况中存在两个独立的事件概率是相等。也就是01和10,那么我把01看成是0,10看成是1,那么他们输出的概率均为p(1-p),其他的情况舍弃。这样就得到了0和1均等生成的随机器了。
思维在扩展一下,生成1,2,…n的概率分别是1/n,也就是均等的。那么我们可以想怎么生成一个序列,里面有n个独立时间,概率是相等。而且我们能够猜测到这些概率的形式为 p^x*(1-p)^y,如果要相等,那么x必须等于y.这样就说明了序列中0和1的个数是相等的。而且这样的情况必须有多与n个才行。
数学表示就是 C(2x,x) >=n ,我们只需要知道x就能够知道序列要多长了。而且中间必定有超过n个概率为{p(1-p)}^x不相等序列。
问题就可以解决了。
其实卡我的问题是,丢掉那些多余的,只要n个等概率的序列,是否真的是等概率的(最终输出)。
腾讯面试题:
已知有个rand7()的函数,返回1到7随机自然数,让利用这个rand7()构造rand10() 随机1~10。
利用的方法和上个问题类似,如何能够得到一个等概率的独立事件。这个问题和上个问题不同的是,这里产生的序列,要变成和的形式或者其他的形式,那么概率就会发生变化了。
如果能够得到一组等概率的数,不管是什么数,只要等概率而且个数大于10,那么问题就可以解决了。
发现(rand7()-1)*7+rand7(),可以等概率的生成1到49。
呵呵,这不就得了,只要把11-49砍掉就可以了。不过这样的效率比较低。可以砍掉41-49,然后在把1-40映射到1-10,那么问题也就解决了。
腾讯面试题:
等概率采样数据流中的数字。
比如从数据流中等概率的采样k个数字。
怎么做呢?先拿到最开始的k个数字,然后以后的每个数字等概率的和这k个数字交换。那么就可以达到每个数字被抽取的概率是等概率的。
怎么证明呢?
采用归纳方法,假设前n个数字等概率的采样k个数字,那么每个数字被采样的概率为k/n,现在新来一个数字,变成了n+1个数字,那么每个数字被采样的概率变位k/(n+1),我们要证明这个
这个问题在计算机程序设计艺术书中提到,叫Reservoir Sampling(蓄水池采样),属于随机算法的一种。
现在假定存在了n个数字,来了第n+1个数字,那么第n+1个数字被选择的概率是k/(n+1),那么我们推算其他的数字被选择的概率也是k/(n+1)
P(其余数字) = p(其余数字|第n+1个选择)*p(第n+1个选择) + p(其余数字|第n+1个不选择)*p(第n+1个不选择)
= k/n*(1-1/k)*k/(n+1) + k/n*(n+1-k)/(n+1)
= k*(k-1) / (n *(n+1) ) + k*(n+1-k) / (n*(n+1))
= k*n/(n *(n+1))
= k/(n+1)
得证。其余数字被选择的概率依然也是 k/(n+1)
一道笔试题,抛骰子8次,和为多少最大,对于笔试题可以这样考虑,两个骰子和为 7的概率最大,8次的话最大为28.
下面编程给出说明,result[i][j] 代表抛i次时,和为j 的次数。对于第i+1 次可使用前面的结果来计算,如计算 result[i+1][48] 可以 把result[i][48-1], result[i][48-2],result[i][48-3],result[i][48-4],result[i][48-5],result[i][48-6] 的值加起来,这样的话就可以自底向上的推出任意次抛骰子的和的结果。
算法如下:
已知:
1. 一个幼儿园有4名男童和若干名女童。
2. 往此幼儿园中放入一名儿童(性别未知)。
3. 而后从该幼儿园中随机的接出一名儿童,发现是男童。
问题:
那名在步骤2中放入的儿童是女童的概率有多大?
问题描述:有一枚不均匀的硬币,已知抛出此硬币后,正面向上的概率为p(0 < p < 1
)。请利用这枚硬币产生出概率相等的两个事件。
这个问题跟之前的利用等概率Rand5产生等概率Rand3非常像,但却简单的多。几个月前还为这个事情头疼了一下,现在想来真是不应该。
某一次抛出硬币,正面向上的概率是p,反面向上的概率是1 - p,当p不等于0.5时,这两个事件的概率就不一样了。怎么能凑出等概率呢?还是要利用概率的加法和乘法法则。这里用乘法,也就是连续的独立事件。
连续抛两次硬币,正反面的出现有四种情况,概率依次为:
这不,中间两种情况的概率是完全一样的。于是问题的解法就是连续抛两次硬币,如果两次得到的相同则重新抛两次;否则根据第一次(或第二次)的正面反面情况,就可以得到两个概率相等的事件。
用Python程序模拟一下这个过程,首先是一个叫做UnbalancedCoin的类,用来模拟这枚不均匀的硬币。Flip方法表示抛一次硬币,返回值True代表正面,False代表反面。根据要求,这个函数返回True和False的概率分别是p和1 - p。函数MakeEqualProb利用参数coin(这枚不均匀硬币)构造出两个事件(依旧用True和False表示),并且这两个事件的概率都是0.5。
2017 年
注意: 请简要写出每道题的解答过程或思路, 否则会扣分!
卷一(满分 85)
1.假设有三枚硬币,两枚正常(一面风景,一面人像),一枚不正常(两面都是人像)。将
三枚硬币放入一个黑匣子,随机拿出一枚放在桌上,发现上面是人像。请问下面也是人像的
几率有多少? (7 分)
2.A、B两人轮流掷硬币,由A开始,先掷出正面者胜。请问A获胜的概率是多少?(10
分)
3.
1)你和我玩一个游戏。你需要付给我x元,然后可以掷一次筛子。掷出的点数就是我需要
付你的钱数。这个游戏中, x 是多少时,对你我都是公平的? (3分)
2)假设我允许你掷两次筛子。第一次投掷之后,你可以选择是否投掷第二次。如果你选择
不投掷,就取第一次的结果;如果你选择投掷第二次,就必须接受第二次的结果。这个游戏
中, x 是多少? (10分)
3)假设我允许你掷任意多次,x是多少? (3分)
4. 一段长度为1的线段,随机截成三段,请问这三段能够组成一个三角形的几率有多大?
(10 分)
5. 某人向南走100公里,向东走100公里,再向北走100公里,最后回到了出发点。请问
这样的位置在地球上存在吗?唯一吗?具体是哪些位置? (7分)
6.
1) x,y都是[0,1]均匀分布的随机变量,请问x+y大于1的概率是多少? (5分)
2)x,y,z都是[0,1]均匀分布的随机变量,请问x+y+z大于1的概率是多少?(10分)
7.你给我x元参与一个游戏:8张扑克牌,4红4黑。随机洗牌后开始翻牌。翻到红牌我给
你 1 元,翻到黑牌你给我1元。你有一个权力:在任意一次翻牌并结算后都可以终止游戏。
x 是多少时,对你我都是公平的?你的最优策略是什么? (20分)
卷二(满分 15)
1. 给定一个整数数组A=[a0, a1, …, an-1], 数组中可能存在一个元素满足以下条件: 数组中该
元素的左边所有元素之和与该元素右边所有元素之和相等(如果该元素左边或者右边没有元
素,对应的和视为 0)。也就是说可能存在i(0 ≤ i ≤ n-1) 满足a0+…+ai-1= ai+1+…+an-1。
请编写一个函数,判断给出的数组中是否存在一个满足条件的元素。(5 分)
例如对于数组[1, 2, 3, 3]程序应返回true(a0+a1=a3=3),对于数组[2, 4, 1]应返回 false。
2. 已知整数序列A满足已下条件:
1) A0=0
2) Ai+1 – Ai= x或者y
其中 x和y是两个整数。
给定序列长度 n 和x,y的值,打印出A最后一个元素所有可能的值。(10分)
例如:对于 n = 3, x = 1, y = 2, 序列A的所有可能情况为:
1)0 12
2)0 13
3)0 23
4)0 24
打印结果应为: 2 3 4(按其他顺序打印也算正确)
有一个木桶,里面有M个白球,小明每分钟从桶中随机取出一个球涂成红色(无论白或红都涂红)再放回,问小明将桶中球全部涂红的期望时间是多少?
数学期望类的题目,主要是要理解什么是数学期望,数学期望是干什么用的,关于这些问题的解答,大家可以自己去理解,思考或者翻书,我要讲的内容是如何利用这些数学期望的特点。
数学期望的递归特性:
飞行棋大家都玩过吧,应该知道每次抛到6,就有一架飞机可以出门了,那么问你一架飞机可以出门的时候,抛筛子次数的数学期望是多少?
你估计会毫不犹豫的说是6(P=1/6,E=1/P=6),但是你思考过深一层次的原因吗?
好吧,我来告诉你,我们记抛6的期望次数是E,如果第一次抛的是6,那么就是1次,概率是1/6;如果第一次不是6呢,那么次数是1+E,概率为5/6;
那么 E = 1 * (1/6) + (1+E) * (5/6),你可以很容易的解出 E = 6
上面加粗的红色字体用的就是类似一个递归的概念,希望你能理解吧,不行的话,那只能自己去努力理解了,呵呵。
现在我们开始解答上面的问题:
令P[i]代表M个球中已经有i个球是红色后,还需要的时间期望,去将所有球都变成红色。
So,给出递归式:P[i]= (i/M) * P[i] + (1-i/M)* P[i+1] + 1
我相信大家都能理解这个公式的含义,不过还是解释一下,在P[i]的情况下,我们选一次球,如果是红球,那么概率是i/M,子问题还是P[i],如果是白球,那么概率是1-i/M,子问题是P[i+1],注意你当前的选球操作要计算在内,即一次
化简如上递归式得:P[i] = P[i+1] + M/(M-i),显然P[M] = 0;
所以:
P[M-1] = P[M] + M/1
P[M-2] = P[M-1] + M/2
…
P[0] = P[1] + M/M
综上:P[0] = 0 + M/1 + M/2 + … + M/M,至此问题已经解决,不过我希望大家学到的不是这个答案,而是分析这个题目的过程
0 + M/1 + M/2 + M/3 + … + M/M