1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 选哪扇门得奖金的算法

选哪扇门得奖金的算法

时间:2023-02-20 10:55:49

相关推荐

选哪扇门得奖金的算法

一道题目:台上有三扇门,其中一扇门后藏有现金100万,主持人叫你选择其中一扇门后,然后主持人在余下的门中排除一个,这时问你要不要更换选择?

下面给出数学说明

不换门是很简单的古典概型

换门中奖等价于第一步要选错等价于p=2/3

同理四扇门和更一般 的n扇门结果如下:

下面提供两种算法,第一种是我做的,第二种来自网上原文链接,计算百万次.

import numpy as npimport randombatch_size=1000000print('sample:{}'.format(batch_size))A=np.zeros((batch_size,3))A[range(batch_size),np.random.choice(3,batch_size)]=1count=[]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_sizeprint('换个门后获胜的概率为=',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_sizeprint('不换门获胜的概率为=',round(acc1,3))

sample:1000000换个门后获胜的概率为= 0.666不换门获胜的概率为= 0.334

import bumpy as npbatch_size=100000print('sample:{}'.format(batch_size))A=np.zeros((batch_size,3))A[range(batch_size),np.random.choice(3,batch_size)]=1B=np.zeros((batch_size,3))B[range(batch_size),np.random.choice(3,batch_size)]=1acco=np.sum(A+B==2)/batch_sizeprint('acc0:{}'.format(acco))I=np.argmin(A+B,axis=1)C=np.zeros((batch_size,3))C[range(batch_size),I]=1F=1-(C+B)acc1=np.sum(A+F==2)/batch_sizeprint('acc1:{}'.format(acc1))

sample:100000acc0:0.33311acc1:0.66689

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。