📅  最后修改于: 2023-12-03 14:58:36.007000             🧑  作者: Mango
题目描述:有n个红球和m个白球,从中任选k个球,求其中至少选出一半为红球的概率。
这道题需要掌握概率论中的基础知识,如组合计数、条件概率等。同时需要注意到题目中至少选出一半为红球,需要分类讨论计算概率。
首先,我们可以先求出总共的选球方案数,在n+m个球中选k个球的方案数为 C(n+m, k)。
然后,我们可以根据选出的红球数量来分类计算概率。如果选出r个红球,则选出至少r个红球的方案数为 C(n, r) * C(m, k-r)。因为选出了r个红球,则还需要从m个白球中选 k-r 个球,且选法必须互不相同,所以使用组合数计算方案数。
最后,根据全概率公式,将各种情况概率相加,即可得到答案。
代码实现如下:
def prob_red(n, m, k):
"""
计算选出至少一半为红球的概率
:param n: 红球数量
:param m: 白球数量
:param k: 总的选球数
:return: 概率值
"""
total = math.comb(n + m, k)
half = k // 2
prob = 0
for r in range(half, n+1):
prob += math.comb(n, r) * math.comb(m, k-r)
return prob / total
print(prob_red(5, 7, 4)) # 0.35714285714285715
在上面的代码中,使用了 Python 中的 math.comb 函数来计算组合数,其中第一个参数为总数,第二个参数为选择数。最后返回的概率值为小数形式,即选出的方案中满足条件的概率值。