python验证单个概率_张宇/王式安 考研数学 概率论争议题 【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这个答案

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值