飛行機座席問題2
https://gyazo.com/9a7142e7ea2abcf9e3b7531666824f1e.png
100人乗りの飛行機があり,乗客は100人いる
搭乗券には席番号が書かれている
99%の人はきちんと自分の席に座ろうとするのだが、1%の人は空いてる席に勝手に座る
最後の客が自分の席に座れる確率は?
つまり、真面目に考えるよりもとにかくシミュレートする方が速いことになる
ていうかシミュレーション以外に解く方法はあるか??
code:ruby
ok = 0 # 自分の席に座れた場合
notok = 0 # 座れなかった場合
10000.times { # 何回も試してみて結果を計算する
a = (0...100).to_a.shuffle
seats = []
# ひとり目から99人目まで
(0..98).each { |i|
if rand > 0.01 # 真面目な人
if !seats[ai] # 自分の席が空いてたら else # 誰かがすでにすわってたら
while true # 空いてる席を探す
i = rand(100)
unless seatsi # 空いてる席がみつかったので break
end
end
end
else # いい加減な人
while true # 自分のチケットは見ないで空いてる席を探す
i = rand(100)
unless seatsi # 空いてる席がみつかったので break
end
end
end
}
# 100人目の席は空いてるか?
notok += 1
else # 空いてた!
ok += 1
end
}
puts "自分の席に座れた=#{ok}, 座れなかった=#{notok}"