飛行機座席問題
https://gyazo.com/2940894fbaf4bce8776ae57cd117b6b5.png
100人乗りの飛行機があり,乗客は100人いる
搭乗券には席番号が書かれている
最初に乗った客がチケットをなくしたので適当に座ることにした
次の客は自分の席が空いていればそこに座る,埋まっていたら適当な席に座る.次も同じ...
さて,最後の客が自分の席に座れる確率は?
出典: 松下智氏がFacebookで紹介していたもの もともとどこかのラジオ番組(Car Talk?)で聞いたものらしい
ちょっと考えれば計算できるのだが、シミュレーション計算すると答が確認できるので面白い。 増井.icon code:ruby
ok = 0 # 自分の席に座れた場合
notok = 0 # 座れなかった場合
10000.times { # 何回も試してみて結果を計算する
a = (0...100).to_a.shuffle
seats = []
# ひとり目 勝手なとこに座る
i = rand(100)
# ふたり目から99人目まで
(1..98).each { |i|
if !seats[ai] # 自分の席が空いてたら else # 誰かがすでにすわってたら
while true # 空いてる席を探す
i = rand(100)
unless seatsi # 空いてる席がみつかったので break
end
end
end
}
# 100人目の席は空いてるか?
notok += 1
else # 空いてた!
ok += 1
end
}
puts "自分の席に座れた=#{ok}, 座れなかった=#{notok}"