编程要求
根据提示,在右侧编辑器Begin-End部分补充代码。
任务描述:假设我们现在有 10 个盒子,每个盒子中都放了不同数量的苹果和橙子。每次实验的时候会随机从某个盒子里挑出一个水果,选择每个盒子的概率不同。
任务1:根据全概率公式,求挑出的水果是橙子的概率;提示:numpy.sum(a) 可实现对数组 a 求和。
任务2:已知挑出的水果是橙子,根据贝叶斯公式,求是从第一个盒子挑出的概率。
测试说明
平台会对你编写的代码进行测试:
测试输入:
无
预期输出:
挑出的水果是橙子的概率为: 0.4654342185592185
已知挑出的水果是橙子,是从第一个盒子挑出的概率为: 0.0
# 导入库
import numpy as np
# 共 10 个盒子,b[i][0] 表示盒子 i 中的苹果数量,b[i][1] 表示盒子 i 中的橙子数量
np.random.seed(0)
b = np.random.randint(0, 10, (10, 2))
# 共 10 个盒子,p[i] 表示盒子 i 被挑中的概率
p = np.array([0.1, 0.1, 0.05, 0.15, 0.08, 0.12, 0.09, 0.11, 0.06, 0.14])
# 初始化概率,P 表示挑出的水果是橙子的概率
P = 0
# 任务1:根据全概率公式,求挑出的水果是橙子的概率
########## Begin ##########
for i in range(10):
total_fruits = b[i][0] + b[i][1]
if total_fruits > 0:
P += p[i] * (b[i][1] / total_fruits)
else:
P += 0
########## End ##########
# 打印结果
print("挑出的水果是橙子的概率为:", P)
# 任务2:已知挑出的水果是橙子,根据贝叶斯公式,求是从第一个盒子挑出的概率
########## Begin ##########
total_fruits_box_1 = b[0][0] + b[0][1]
if total_fruits_box_1 > 0:
P_1 = (p[0] * (b[0][1] / total_fruits_box_1)) / P
else:
P_1 = 0
########## End ##########
# 打印结果
print("已知挑出的水果是橙子,是从第一个盒子挑出的概率为:", P_1)