摘要
看到一个小游戏, 分别有三种颜色的小球各 9个, 总共27个,从中任意拿出9个, 可能出现的情况,再不考虑颜色的情况下分别出现的组合的概率计算,使用python完成
计算C(m, n) 和A(m, n)
首先 python中有个math 模块,这个模块可以分别计算出 排列和组合
#排列
def getPerm(m, n):
return math.perm(m, n)
#组合
def getComb(m, n):
return math.comb(m, n)
数学公式
此问题中从27个小球中取出9个小球,可以分为三类 来讨论
第一种, 三个数字相同,即3, 3,3
第二种, 三个数字都不相同, 例如 0, 1 , 8
第三种, 三个数字中任意两个相同, 例如, 4, 4 ,1
第一种情况下的时候, 概率为P = C(9,N)xC(9,N)xC(9,N)x A(3, 0) / C(27, 9)
第二种情况下的时候, 概率为P = C(9,N1)xC(9,N2)xC(9,N3)x A(3, 3) / C(27, 9)
第三种情况下的时候, 概率为P = C(9,N1)xC(9,N1)xC(9,N2)x A(3, 1) / C(27, 9)
数学公式的代码实现
- 计算分母
def CalculateProbability_denominator(all_nums, out_nums):
return math.comb(all_nums, out_nums)
- 计算分子
def CalculateProbability_molecule(num1, num2, num3, fixed_num):
temp1 = math.comb(fixed_num, num1)
temp2 = math.comb(fixed_num, num2)
temp3 = math.comb(fixed_num, num3)
# 假设 三种颜色都不一样
if num1 != num2 != num3<