1. 抛硬币游戏
两个人玩抛硬币的游戏,谁先抛到正面就获胜。那么先抛的人获胜概率为多少?
思路一:把A、B都抛硬币一次看成一局游戏。
情况1: A第一次抛正面 -> A胜 p= 1/2
情况2: A第一次抛反面、B抛正面 -> B胜 p= (1/2) * (1/2)=1/4
情况3: A第一次抛反面、B抛反面 -> 平局,进行下一局
P(A胜)/ P(B胜)= 2
P(A胜)+ P(B胜)= 1
所以可算出 P(A胜)=2/3
P(B胜)=1/3
思路二:计算A失败的总概率
首先我们会发现A抛硬币之后是不会失败的,只有当B抛到正面才代表A失败了。
第一次A抛硬币不会失败
第二次B抛到正面 A失败 概率1/4
第三次A抛硬币不会失败
第四次B抛到正面 A失败 概率1/4 * 1/4
所以有
原文链接:https://blog.csdn.net/artistkeepmonkey/article/details/123248223
1. 抛硬币次数
抛一枚硬币,当出现连续的三次(或k次)正面向上的时候停止,抛硬币的次数期望是多少?
题目分析:
首先提一下期望的定义:设 为离散型随机变量 的可能取值,其分布律为 ,则期望为:
本题需要用归纳法的思想,假设连续出现 次正面朝上的期望是 ,现在我们进行下一次抛硬币,有2种情况:
- 正面朝上。此时达到要求,总次数为 ,而此时概率为 。
- 反面朝上。未达到要求,要重新抛。次数为 ,此时概率也为 。
综上有:
求得通项:
也即
当 时,即 表示连续抛硬币,当出现一次正面朝上时停止,平均抛硬币的次数。
即为
求得
由于 ,可推出
所以
还有一种相对简单的方法:
https://zhuanlan.zhihu.com/p/68358814
3. 利用不均匀硬币产生等概率
问题描述:有一枚不均匀的硬币,抛出此硬币后,可用foo()表示其结果。已知foo()能返回0和1两个值,其概率分别为0.6和0.4。问怎么利用foo()得到另一个函数,使得返回0和1的概率均为0.5。
问题分析:分析连续抛出两次硬币的情况,正反面的出现有四种情况,概率依次为:
(1) 两次均为正面:
(2)第一次正面,第二次反面:
(3)第一次反面,第二次正面:
(4)两次均为反面:
可以看到中间两种情况的概率是完全一样的,于是问题的解法就是连续抛两次硬币,如果两次得到的相同则重新抛两次;否则根据第一次(或第二次)的正面反面情况,就可以得到两个概率相等的事件。
public float coin() {
while (true) {
int a = foo();
if (a != foo()) {
return a;
}
}
}
4. 利用均匀硬币产生不等概率
问题描述:有一枚均匀的硬币,抛出此硬币后,可用foo()表示其结果。已知foo()能返回0和1两个值,其概率均为0.5。问怎么利用foo()得到另一个函数,使得返回0和1的概率分别为0.3和0.7。
问题分析:0和1随机生成,可以理解为二进制。可以令等概率生成0-31的所有数,去掉30和31后,在0-29之间进行一个输出。
int generator()
{
// 生成一个 0 - 31 之间的数字
return a = fun() * 2^4 + fun() * 2^3 + fun() * 2^2 + fun() * 2^1 + fun();
}
int fun2()
{
int a = generator();
// 缩减到 0 - 29 的范围
while(a == 30 || a == 31){
a = generator();
}
// 3*1 - 3*9 共9个能被3 整除,返回0
// 剩余30 -9 = 21 个不能被整除,返回1
// 比例为9:21 = 3:7
if(a != 0){
int b = a % 3; // 3*1 - 3*9
if(b == 0){
return 0;
}
}
return 1;
}
5. 红球50个,蓝球50个,放在两个盒子里,怎么放拿红球的概率最高?
两个箱子概率是1/2,选中某个箱子后又有选择的是不是红球的概率,所以最大概率就是一个红球放在一个箱子里,其余的99个球全放到另一个箱子。 这样概率=0.5+0.5*(49/99)约等于0.75,这样为最大概率。
6. 假如有8个球,其中一个球偏重,给你一个天平,最少称几次能找出偏重的球?
最少要两次先从8个球中拿出六个球,天平两端各三个,若平衡,则较重的那个球在剩余的两个里,把剩余的两个球放在天平上,较重的那端就是较重的球;若不平衡,则将6个球中较重一端的其中两个放在天平上,若平衡,则剩余的那个就是较重的球;若不平衡,较重的那端,就是较重的球。
7. 一副扑克54张,平均分成2份,求这2份都有2张A的概率?
先求分母:
54张牌,分成2份,每份应该27张。
第一步:我们从54张牌取27张,作为第一份,就是
第二步:剩下的27张牌取27张,作为第二份,就是
再求分子:
一副牌有4张A,50张非A的牌。
为了保证两份都要有2张A,在挑第一份的时候,应该先在4张A里面挑2个A,50张非A的牌里挑25个非A。然后第二份就是在剩下的2个A里挑选2个,25个非A里面挑25个非A。
第一步:从4张A里挑2张A,50张非A里挑25张,
第二步:从2张A里挑2张A,25张非A里挑25张,
所以概率为
C(4,2)*C(50,25)*C(2,2)*C(25,25) / (C(54,27)*(C27,27))
=(27*13)/(53*17)
=0.389567147614
8. 一副扑克54张,平均分成2份(或者三份),大小王在一份的概率?
总的分法
大小王在同一份
9. 一副扑克(52张,不含大小王),抽出两张牌,一红一黑(不考虑先后顺序)的概率是多少?
第一次抽到红色的情况有种,第二次抽到黑色的情况有种,而总的情况有种,所以用。
概率方法:假设第一次抽到红色概率是1/2,第二次抽到黑色概率是26/51,所以用(1/2)*(26/51),又因为第一次有可能抽到黑色这一种情况,所以应该再乘2,故
10. 50人的班级,至少两人同一天生日的概率是多少?
365天里选50天不同的生日,有种选法,总共有种生日选法,
参考知乎解答
https://www.zhihu.com/question/19691577/answer/19157843
11. 1000瓶饮料,3个空瓶能换1瓶饮料,问最多喝多少饮料?
1000分为能被3整除的,和不能整除的。1000=999+1:999又可以换333瓶水,1可以先放着,等和后面换的凑成3的倍数,就可以接着换了(没换到也计入总数)。然后333瓶接着换..., 结果为1499
写成程序分析如下
假设一开始有n瓶水,,当n<3,直接返回n
public int count(int n) {
if (n < 3) return n;
int m = n / 3 * 3;
int t = n % 3 + n / 3;
return m + count(t);
}
12. 烧香/绳子问题,有两根不均匀的香,燃烧完都需要一个小时,问怎么确定15分钟的时长?
第一根香点燃一端, 第二根香点燃两端。 当第二根香燃尽时,过去了半小时,因此第一根香总长度剩下半小时。 此时若点燃第一根香的两端,直到燃尽就是15分钟了。
13. 63瓶药剂,1瓶毒药,小白鼠喝了 3天会死,一只小白鼠可以混合喝,问只剩3天,最少需要多少只小白鼠?
因为 对每瓶药进行6位二进制编码,
拿6只小白鼠,每一只喂对应位置编码喂1的药,3天后死掉的小白鼠对应的位置编码都是1,即可确定这个数字。
14. A和B比赛,A、B获胜的概率分别是0.6、0.4,如果你是A,3局2胜和5局3胜你会选择哪个?
本题考查相互独立事件同时发生的概率.每局比赛只有两个结果,甲获胜或乙获胜,每局比赛可以看成是相互独立的。
1)在采用3局2胜制中,甲获胜包括两类互斥事件,即3次独立重复试验中,甲获胜的次数为2或3,所以甲获胜的概率为
2)在采用5局3胜制中,甲获胜包括三类互斥事件,即5次独立重复试验中,甲获胜的次数为3,4,5,所以甲获胜的概率为
- 当比赛无限多局,则甲获胜的概率为1。
二项式定理
甲获胜的概率为
其中
https://blog.csdn.net/weixin_41888257/article/details/108371738