选哪扇门得奖金的算法
一道题目:台上有三扇门,其中一扇门后藏有现金100万,主持人叫你选择其中一扇门后,然后主持人在余下的门中排除一个,这时问你要不要更换选择?
下面给出数学说明
不换门是很简单的古典概型
换门中奖等价于第一步要选错等价于p=2/3
同理四扇门和更一般 的n扇门结果如下:
下面提供两种算法,第一种是我做的,第二种来自网上原文链接,计算百万次.
import numpy as np
import random
batch_size=1000000
print('sample:{}'.format(batch_size))
A=np.zeros((batch_size,3))
A[range(batch_size),np.random.choice(3,batch_size)]=1
count=[]
for k in A:
m=list(k)
e=[0,1,2]
random.shuffle(e)
h=e[0]
t=m[h]
if t==0:
count.append(1)
acco=len(count)/ batch_size
print('换个门后获胜的概率为=',round(acco,3))
count=[]
for k in A:
m=list(k)
e=[0,1,2]
random.shuffle(e)
h=e[0]
t=m[h]
if t==1:
count.append(1)
acc1=len(count)/ batch_size
print('不换门获胜的概率为=',round(acc1,3))
sample:1000000
换个门后获胜的概率为= 0.666
不换门获胜的概率为= 0.334
import bumpy as np
batch_size=100000
print('sample:{}'.format(batch_size))
A=np.zeros((batch_size,3))
A[range(batch_size),np.random.choice(3,batch_size)]=1
B=np.zeros((batch_size,3))
B[range(batch_size),np.random.choice(3,batch_size)]=1
acco=np.sum(A+B==2)/batch_size
print('acc0:{}'.format(acco))
I=np.argmin(A+B,axis=1)
C=np.zeros((batch_size,3))
C[range(batch_size),I]=1
F=1-(C+B)
acc1=np.sum(A+F==2)/batch_size
print('acc1:{}'.format(acc1))
sample:100000
acc0:0.33311
acc1:0.66689
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫