在某个电视节目比赛环节中,参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门可赢得该汽车,另外两扇门后面则各藏有一只山羊。参赛者选定了一扇门,但未开启它,随后节目主持人蒙提霍尔(Monty Hall)开启了剩下的两扇门中的一扇并且发现后面是一只山羊,此时主持人会给予选手重新选择的机会。问题是:此时参赛者换另一扇门会否增加赢得汽车的机率?
package main
import (
"fmt"
"math/rand"
"time"
)
var (
choose, answer int
successChange, successKeep, successUnknownChange = 0, 0, 0
)
func main() {
rand.Seed(time.Now().UnixNano())
for i := 0; i < 10000; i++ {
choose = rand.Intn(3)
answer = rand.Intn(3)
//不换且正确
if answer == choose {
successKeep++
}
//主持知道答案,排除一个,选择换(第一次选中换后不可能选中)
if (choose+1)%3 == answer || (choose+2)%3 == answer {
successChange++
}
//主持不知道答案,随机排除,选择换
newChoose := (choose + rand.Intn(2)) % 3
if newChoose == answer {
successUnknownChange++
}
}
fmt.Println(successChange)
fmt.Println(successKeep)
fmt.Println(successUnknownChange)
}
运行结果
~/projects/go_test$ go run main.go
6586
3414
3369