Monty Hall問題のシミュレーションを作成しましたが、私の結果(10,000,000回のテストでも)は異常です。戦略1(維持)のヒット数は1/3、戦略2(スイッチ)は44,44%です。コードに誤りがありますか?Monty Hallシミュレーションのみ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問題のルールを誤解しました。モンティはドアを開けません。あなたはそれをチェックしませんでした。 – kennytm