gpt4 book ai didi

swift - Monty Hall 模拟仅 44%

转载 作者:搜寻专家 更新时间:2023-11-01 07:18:36 25 4
gpt4 key购买 nike

我刚刚为 Monty Hall 问题创建了一个模拟,但我的结果(即使有 10,000,000 次测试)还是很奇怪。对于策略 1(保持),命中率为 1/3,而策略 2(转换)为 44.44%。代码有错误吗?

谢谢大家!

var hits1 = 0
var hits2 = 0
let testsNumber = 1000

for i in 0..<testsNumber {

var doors: [Int] = []

for i in 0..<3 {
doors.append(0) // Append closed door
}

doors[Int(arc4random_uniform(UInt32(doors.count)))] = 1 // Here's the car...
var selection = Int(arc4random_uniform(UInt32(doors.count))) // Select door


if doors[selection] == 1 {
hits1 += 1
}

// Open first closed door
for i in 0..<doors.count {
if doors[i] != 1 {
doors[i] = -1 // Open door
break
}
}

// Switch to next closed door
repeat {
selection = (selection + 1) % doors.count
} while(doors[selection] == -1)

if doors[selection] == 1 {
hits2 += 1
}

}

print("Hits: \(hits1), quote: \((Double) (hits1) / (Double) (testsNumber))")
print("Hits: \(hits2), quote: \((Double) (hits2) / (Double) (testsNumber))")

最佳答案

Monty Hall 问题说“选择一扇门;在我打开它之前,我会展示另一扇门(没有汽车的门)后面的东西,然后让您保留最初的选择或切换到另一扇紧闭的门”。

但请考虑:

for i in 0 ..< doors.count {
if doors[i] != 1 {
doors[i] = -1 // Open door
break
}
}

这实际上是在说“向参赛者展示第一扇没有汽车的门后面是什么”。

但是,您没有考虑这扇门可能是参赛者已经选择的那扇门的可能性。那就是改变游戏的参数。

你的意思是说“打开一扇没有车的门,而且不是参赛者选择的门。”

for i in 0 ..< doors.count {
if doors[i] != 1 && i != selection {
doors[i] = -1 // Open door
break
}
}

当你这样做时,你总是改变你的选择(已经显示其他两个没有车的门之一)的几率上升到 2/3。

关于swift - Monty Hall 模拟仅 44%,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40384372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com