张宇/王式安 考研数学 概率论争议题 【Python验证版】

张宇/王式安 概率论争议题 【Python版】

之前写过一篇关于这道题的Java验证版,但是当时的Java代码比较混乱,在这里补充一个Python代码。同样地,由于技术水平限制,这篇代码也存在很大的局限性,欢迎交流指正~

原文链接: 张宇/王式安 考研数学 概率论争议题 【Java验证版】

一、题目

本题为1987年实考题
设两箱内装有同种零件,第一箱装50件,其中有10 件一等品,
第二箱装30件,其中有18件一等品,先从两箱中任挑一箱,
再从此箱中前后不放回任取两个零件,求:
		(1)先取出的零件是一等品的概率p.
		(2)在先取出的是一等品的条件下,后取的仍是一等品的条件概率q.

二、争议

如果你看到这篇文章,估计已经多少听说过这个争议,在此简单介绍即可。
张宇和王式安第一问答案一样,无争议,为0.4。
第二问,张宇认为,应该用条件概率公式,答案约为0.4855.
但王式安先生认为,应该用全概率公式,答案为0.3849.

三、个人结论

本题思想简单,题目中也无明显歧义,简单重复验证即可。
个人觉得,应该是王式安先生错了,错误的原因在于忽略了“第一次取的是一等品”这一事件已经发生。
(应考虑贝叶斯,执果索因)

四、代码验证

1.代码思想

1.随机*抽取times次
    *此处的随机,我们约定为两个箱子中任取一个箱子进行实验并记录为样本
2.统计成功次数并计算概率

2.实现代码

'''
设两箱内装有同种零件,第一箱装50件,其中有10 件一等品,
第二箱装30件,其中有18件一等品,先从两箱中任挑一箱,
再从此箱中前后不放回任取两个零件,求:
		(1)先取出的零件是一等品的概率p.
		(2)在先取出的是一等品的条件下,后取的仍是一等品的条件概率q.
'''
#初始化两箱零件
#按照题意,实际上设前XX件为正品即可,但为了模拟真实场景,采用random生成
#0 为次品 1 为一等品
import random

def defQuality(box,list_random):
    for i in list_random:
        box[i]=1


box1=[0 for i in range(50)]
box2=[0 for i in range(30)]
list_random_1=random.sample(range(0,50,1),10)
list_random_2=random.sample(range(0,30,1),18)
defQuality(box1,list_random_1)
defQuality(box2,list_random_2)


#初始化完成
#求在先取出的是一等品的条件下,后取的仍是一等品的条件概率q.
list_box=[box1,box2]

def takeOut(box):#取出操作
    list_random_takeOut=random.sample(range(0,len(box),1),2)
    #主要是为了保证取到不相等的两个随机数,暂不重点考虑性能
    #如果您有更好的办法,请您在评论区指点一二,感激不尽
    firT=list_random_takeOut[0]
    secT=list_random_takeOut[1]
    if box[firT]==1:
        if(box[secT]==0):
            return 1,0
        if(box[secT]==1):
            return 1,1
    else:
        return 0,0

def test(times):#按次数测试
    isQualityCount,fir_is_quality=0,0
    for i in range(0,times):
        temp1,temp2=takeOut(list_box[random.randint(0,1)])
        fir_is_quality+=temp1
        isQualityCount+=temp2
    return isQualityCount/fir_is_quality

print("\nPlease input the times you want to test:")
inputTimes=int(input())
print("A total of %d tests results a success rate of %f."%(inputTimes,test(inputTimes)))

3.测试结果

A total of 1000 tests results a success rate of 0.515385.

A total of 10000 tests results a success rate of 0.495892.

A total of 100000 tests results a success rate of 0.485057.


显然,测试结果更倾向于张宇的答案,随着房本越大,概率点越靠近0.485这个答案

水平有限,如有错误,请您批评指正。

 

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值