选哪扇门得奖金的算法

一道题目:台上有三扇门,其中一扇门后藏有现金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
posted @   luoganttcc  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
点击右上角即可分享
微信分享提示