前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

趣味数学:关于概率的蒙提霍尔悖论(也称为三门问题)

qiguaw 2024-09-02 20:23:03 资源文章 79 ℃ 0 评论

这个游戏的玩法是:参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门就可以赢得该汽车,而另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人会开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。问题是:换另一扇门会否增加参赛者赢得汽车的机会率?如果严格按照上述的条件的话,答案是会—换门的话,赢得汽车的机会率是 2/3。

这条问题亦被叫做蒙提霍尔悖论:虽然该问题的答案在逻辑上并不自相矛盾,但十分违反直觉。这问题曾引起一阵热烈的讨论。

# 代码

下面的代码来自《程序员的数学2:概率统计》。

```ruby

#!/usr/bin/ruby -s

# -*- coding: euc-jp -*-

# -*- Ruby -*-

def usage

name = File::basename $0

print <<EOU

#{name}: ¥a¥ó¥?¥£¥???¥?ì??ê¤ò¥·¥?¥?¥ì??¥è

(??)

#{name} 10 ¢a 10 2ó??1?

(¥a¥×¥·¥?¥ó??)

-c ¤T¤?¤? -change ¢a ¥?¥?¤ò??¤?èa¤òê?¤¨¤?

-s=777 ¤T¤?¤? -seed=777 ¢a íe??¤???¤ò???ê

-help ¤T¤?¤? -h ¢a ¤3¤?¥á¥?¥???¥?¤òé??¨

EOU

end

#####################################

if ($help || $h || ARGV.empty?)

usage

exit 0

end

$change ||= $c

$seed ||= $s

srand($seed.to_i) if $seed

$n = ARGV.shift.to_i

def choice(a)

a[rand(a.length)]

end

#####################################

$doors = 'ABC'.split //

$n.times{

car = choice $doors

you = choice $doors

goat = choice($doors - [car, you])

you = choice($doors - [you, goat]) if $change

result = (car == you) ? 'O' : 'X'

puts result

}

```

结果是更换选择更好。

```

$ make long

(no change)

./monty.rb 10000 | ../count.rb

O: 3327 (33.27%)

X: 6673 (66.73%)

(change)

./monty.rb -c 10000 | ../count.rb

O: 6609 (66.09%)

X: 3391 (33.91%)

```

# 最后

因为机器学习需要概率,我也尝试学了一下,各种公式真的头大。努力吧。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表